和KY2相比难度大降;本题直接采用冒泡排序即可。特别地,如果排序过程中成绩相同的两个人学号前面的比后面的大,则也需要交换。
#include<bits/stdc++.h>
#define _CRT_SECURE_NO_DEPRECATE
int main() {
int n;
std::cin >> n;
std::vector<int> p(n), q(n);
for (int i = 0; i < n; i++) {
std::cin >> p[i] >> q[i];
}
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (q[j] < q[i] || (q[j] == q[i] && p[j] < p[i])) {
std::swap(q[i], q[j]);
std::swap(p[i], p[j]);
} else continue;
}
}
for (int i = 0; i < n; i++) {
std::cout << p[i] << " " << q[i] << std::endl;
}
}