解释+答案!
2025-09-05 21:26:03
发布于:重庆
0阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<pair<int, int>> candidates; // {报名号, 成绩}
for (int i = 0; i < n; i++) {
int id, score;
cin >> id >> score;
candidates.push_back({id, score});
}
// 排序:成绩降序,成绩相同按报名号升序
sort(candidates.begin(), candidates.end(), [](const auto& a, const auto& b) {
if (a.second != b.second)
return a.second > b.second;
return a.first < b.first;
});
// 计算面试分数线
int interview_count = static_cast<int>(m * 1.5);
int score_line = candidates[interview_count - 1].second;
// 统计实际进入面试的选手
int actual_count = 0;
for (const auto& candidate : candidates) {
if (candidate.second >= score_line) {
actual_count++;
} else {
break; // 已排序,后续成绩更小
}
}
// 输出结果
cout << score_line << " " << actual_count << endl;
for (int i = 0; i < actual_count; i++) {
cout << candidates[i].first << " " << candidates[i].second << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个