思路:一个二维数组存储报名号和成绩,再用一个数组存储成绩,降序排序成绩,利用sort二维数组vector<int>默认排序第一个元素,再将报名号升序排序,再用成绩来匹配报名号,这时候输出就是满足要求的了;
sort(score.begin(), score.end(), greater<int>());
number是vector<vector<int>>
sort(number.begin(), number.end());
AC代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>>number(n);
for (int i = 0; i < n; i++) {
number[i].resize(2, 0);
}
vector<int>score;
for (int i = 0; i < n; i++) {
int temp, temp1;
cin >> temp >> temp1;
number[i][0] = temp; number[i][1] = temp1;
score.push_back(temp1);
}
sort(score.begin(), score.end(), greater<int>());
int target = score[m * 1.5 - 1];
int ans = 0;
sort(number.begin(), number.end());
for (int i = 0; i < n; i++) {
if (score[i] >= target) {
ans++;
}
else {
break;
}
}
cout << target << " " << ans << endl;
for (int i = 0; i < ans; i++) {
for (int j = 0; j < n; j++) {
if (number[j][1] == score[i]) {
cout << number[j][0] << " " << number[j][1] << endl;
number[j][1] = -1;
break;
}
}
}
return 0;
}