[SHAKE][2019] 예선 1번 풀이
풀이
특별한 알고리즘이나 자료구조는 필요하지 않았습니다.
- N : 전체 문제의 수
- a : 이건 뭐였는지 잘 기억이 안납니다. 문제가 공개되면 수정하겠습니다.
- K : 맞출 수 있는 최대 문항의 수
- 모든 문제에 대해서 100점을 받을 수 있는지 140점을 받을 수 있는지 판단한다.
- 해당 문제에서 받을 수 있는 점수들을 vector에 넣는다.
- vector를 내림차순으로 정렬한 후, 앞에서부터 K개만큼의 값들을 더한다.
코드
/*
2019-06-02
장환석
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, a, K;
bool check(int a, int b) {
return a > b;
}
int main(void) {
vector<int> result;
vector<int>::iterator it;
scanf("%d %d %d", &N, &a, &K);
int low, max;
for (int i = 0; i < N; i++) {
scanf("%d %d", &low, &max);
int temp = 0;
if (low <= a) {
temp += 100;
}
if (max <= a) {
temp += 40;
}
result.push_back(temp);
}
sort(result.begin(), result.end(), check);
int r = 0;
int j = 0;
for (it = result.begin(); it != result.end() && j < K; it++, j++) {
r += *it;
}
printf("%d\n", r);
return 0;
}