プログラミングコンテスト終了後、企業の採用担当は成績優秀者を推薦する必要がある。推薦条件は以下の通り:
- コンテスト得点が175点以上であること
- 最大K回の推薦ラウンドが可能
- 各ラウンドでは得点が厳密に増加する順序で推薦
- PAT試験の合格者(スコアが基準以上)は同点でも推薦可
入力形式
最初の行には3つの整数N(≤10⁵)、K(≤5×10³)、S(≤100)が与えられる。続くN行には、各学生のコンテストスコアとPATスコアが記載される。
出力形式
推薦可能な学生の最大数を出力する。
入力例
10 2 90 203 0 169 91 175 88 175 0 175 90 189 0 189 0 189 95 189 89 256 100
出力例
8
最初のラウンドでは、得点175, 189, 203, 256の各グループから代表者を選出。さらにPAT合格者の175点と189点の学生も追加。二回目のラウンドでは残りの175点と189点の学生を推薦。
#include<bits/stdc++.h>
using namespace std;
const int MAX_SCORE = 400;
int contest_count[MAX_SCORE], pat_pass[MAX_SCORE];
int total_students, max_rounds, pass_line;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> total_students >> max_rounds >> pass_line;
for (int i = 0; i < total_students; i++) {
int contest_score, pat_score;
cin >> contest_score >> pat_score;
contest_count[contest_score]++;
if (pat_score >= pass_line) {
pat_pass[contest_score]++;
}
}
int recommended_count = 0;
for (int score = 175; score < MAX_SCORE; score++) {
// PAT合格者は無条件で推薦
recommended_count += pat_pass[score];
// PAT未合格者の処理
int remaining_candidates = contest_count[score] - pat_pass[score];
recommended_count += min(remaining_candidates, max_rounds);
}
cout << recommended_count << "\n";
return 0;
}