https://www.acmicpc.net/problem/17224
17224번: APC는 왜 서브태스크 대회가 되었을까?
2019년 올해도 어김없이 아주대학교 프로그래밍 경시대회(Ajou Programming Contest, APC)가 열렸다! 올해 새롭게 APC의 총감독을 맡게 된 준표는 대회 출제 과정 중 큰 고민에 빠졌다. APC에 참가하는 참가
www.acmicpc.net
문제를 역량별로 분류해 풀지 못하는 문제, 쉬운 문제만 풀 수 있는 문제, 어려운 문제도 풀 수 있는 문제로 나눠 그 개수를 센 뒤, 점수를 많이 받을 수 있는 문제부터 해결해 K개의 문제를 푼 뒤 얻은 총점을 출력한다.
#include <cstdio>
int min(int a, int b) { return a < b ? a : b; }
int main(){
// N: 문제의 개수, L: 역량, K: 풀 수 있는 문제 수
// sub1: 쉬운 문제의 난이도, sub2: 어려운 문제의 난이도, ans: 총점
int N, L, K, sub1, sub2, ans = 0;
// solve[i]: { 못 푼 문제, 쉬운 문제, 어려운 문제 }[i]를 푼 개수
// score[i]: { 못 푼 문제, 쉬운 문제, 어려운 문제 }[i]의 점수
short solve[3] = { 0, }, score[3] = { 0, 100, 140 };
// 문제의 조건을 입력받으면서 각 문제에 대해
for (scanf(" %d %d %d", &N, &L, &K); N--; ) {
// 각 문제를 역량별로 분류해 문제수를 저장
scanf("%d %d", &sub1, &sub2);
solve[(sub2 <= L) + (sub1 <= L)]++;
}
// 각 분류에 대해 얻는 점수가 큰 순으로 문제를 푼다
for (int i = 2; i; i--) {
L = min(K, solve[i]);
ans += L * score[i];
K -= L;
}
// 문제를 풀어서 얻은 총점을 출력
printf("%d\n", ans);
return 0;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 17249번: 태보태보 총난타 (0) | 2022.01.13 |
---|---|
백준 17225번: 세훈이의 선물가게 (0) | 2022.01.13 |
백준 17219번: 비밀번호 찾기 (0) | 2022.01.13 |
백준 17144번: 미세먼지 안녕! (0) | 2022.01.13 |
백준 17086번: 아기 상어 2 (0) | 2022.01.13 |