3.1 Динамическая память

3.1.4 Динамический массив участников

Условие

В соревновании участвуют N человек. Для каждого заданы числовой идентификатор и результаты трёх этапов. Побеждает участник с наибольшей суммой результатов. При равенстве сумм побеждает участник с меньшим идентификатором.

Объявите структуру struct Participant с целочисленными полями id, score1, score2 и score3. После чтения N динамически выделите память для массива из N таких структур и прочитайте в него всех участников. Размер выделения рассчитывайте через sizeof структуры или элемента массива, а не через сумму размеров её полей.

Реализуйте функцию int best_participant(const struct Participant participants[], int count), которая возвращает индекс победителя с нуля, не изменяет массив и не выполняет ввод или вывод. В main вызовите функцию, выведите идентификатор победителя и сумму его результатов, затем освободите массив структур.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Стандарты: C11 / C++17.

Входные данные

В первой строке вводится целое число N — количество участников. Следующие N строк содержат по четыре целых числа: id, score1, score2, score3. Ограничения: 1 ≤ N ≤ 100000, 1 ≤ id ≤ 10⁹, 0 ≤ score1, score2, score3 ≤ 100. Идентификаторы участников различны.

Выходные данные

Два целых числа в одной строке через пробел — идентификатор победителя и сумма его результатов на трёх этапах.

Примеры

Вход 1
3
10 20 30 40
7 50 50 50
2 0 0 0
Ожидаемый выход
7 150
Вход 2
2
20 100 0 0
5 50 25 25
Ожидаемый выход
5 100
Вход 3
1
99 0 0 0
Ожидаемый выход
99 0

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.