Код:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct uch {
int id;
int ball;
};
bool cmp(uch a, uch b) {
if (a.ball != b.ball) {
return a.ball > b.ball;
}
else {
return a.id < b.id;
}
}
int main() {
int n;
cin >> n;
vector<uch> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i].id >> a[i].ball;
}
sort(a.begin(), a.end(), cmp);
for (int i = 0; i < n; i++) {
cout << a[i].id << " " << a[i].ball << endl;
}
return 0;
}
Что происходит текстом
Начало работы программы.
Сначала вводится число n — количество участников олимпиады.
Для каждого участника вводятся два числа:
его идентификационный номер и количество набранных баллов.
Все данные сохраняются в массив участников.
Затем программа сортирует этот массив.
Сортировка выполняется по таким правилам:
Сначала участники сравниваются по количеству баллов.
У кого баллов больше, тот должен идти раньше.
Если у двух участников одинаковое количество баллов, они сравниваются по идентификационному номеру.
У кого номер меньше, тот идёт раньше.
После сортировки программа выводит всех участников в нужном порядке:
сначала идентификационный номер, затем количество баллов.
Конец работы программы.