Одиннадцать задач, порядок в которых вы задаёте сами. Прежде чем писать код, запишите правило словами в виде лестницы: сначала по …; при равенстве — по …. Тогда компаратор — просто его перевод.
- «Student Ranking»: рейтинг из урока с другими именами полей — балл по убыванию, штраф по возрастанию, имя по возрастанию. 5·10⁵ записей: константные ссылки в компараторе.
- «Stable Queue»: приоритет по убыванию, а при равенстве — порядок прихода; индекс становится вторым ключом. Имена повторяются, так что по имени не сравнивайте.
- «Рестораны Таджикистана»: город от A до Z, затем оценка по убыванию; выводятся номера ресторанов во вводе, поэтому каждая запись хранит свой индекс.
- «Calendar Dates»: год, месяц, день — три поля
int, три ступеньки. - «Event Priorities»: слово-тип превращается в число (
END0,QUERY1,START2) при чтении записи; дальше время, тип, id. - «Событие наивысшего приоритета»: нужен только первый элемент после сортировки.
Отсортируйте и напечатайте
v[0]— или прогоните компаратор в одном цикле поиска максимума. - «Covering Intervals»: оставьте только интервалы, содержащие x, в виде пар
{длина, индекс}; обычный порядок пар — ровно тот, что нужен. Границы до 10¹⁸:long long. - «Exact Ratio Order»: сравнивайте p₁/q₁ с p₂/q₂ без деления:
p1 * q2 < p2 * q1(q положительно). Произведения достигают 10¹⁸ и помещаются вlong long; при равенстве решает id. - «Nested Birthday»: месяц, затем день, затем имя — год читается и не используется.
- «Weighted Edges»: вес, затем пара
{min(u, v), max(u, v)}, затем id. Пара, сравниваемая через<, — одна ступенька лестницы. - «Stable Multi-Key Sort»: k ключей на запись (k до 5) — читайте их в
vector<int>; два вектора сравниваются через<как пары, позиция за позицией. Тогда пары{ключи, id}сортируются ровно в нужном порядке.