和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;
    }
}