Присоединиться

11 класс·высокий уровень

Каждый участник регистрируется на сайте игры под определённым игровым

Условие

Соревнования по игре «Тетрис-онлайн» проводятся по следующим правилам.1. Каждый участник регистрируется на сайте игры под определённым игровым именем. Имена участников не повторяются.2. Чемпионат проводится в течение определённого времени. В любой момент этого времени любой зарегистрированный участник может зайти на сайт чемпионата и начать зачётную игру. По окончании игры её результат(количество набранных очков) фиксируется и заносится в протокол.3. Участники имеют право играть несколько раз. Количество попыток одного участника не ограничивается.4. Окончательный результат участника определяется по одной игре, лучшей для данного участника.5. Более высокое место в соревнованиях занимает участник, показавший лучший результат.6. При равенстве результатов более высокое место занимает участник, раньше показавший лучший результат.В ходе соревнований заполняется протокол, каждая строка которого описывает одну игру и содержит результат участника и его игровое имя. Протокол формируется в реальном времени по ходу проведения чемпионата, поэтому строки в нём расположены в порядке проведения игр: чем раньше встречается строка в протоколе, тем раньше закончилась соответствующая этой строке игра. Напишите эффективную, в том числе по памяти, программу, которая по данным протокола определяет победителя и призёров. Гарантируется, что в чемпионате участвует не менее трёх игроков. Перед текстом программы кратко опишите алгоритм решения задачи и укажите используемый язык программирования и его версию. Описание входных данныхПервая строка содержит число N — общее количество строк протокола. Каждая из следующих N строк содержит записанные через пробел результат участника (целое неотрицательное число, не превышающее 100 миллионов) и игровое имя (имя не может содержать пробелов). Строки исходных данных соответствуют строкам протокола и расположены в том же порядке, что и в протоколе. Гарантируется, что количество участников соревнований не меньше 3.Описание выходных данныхПрограмма должна вывести имена и результаты трёх лучших игроков по форме,приведённой ниже в примере. Пример входных данных:969485 Jack95715 qwerty95715 Alex83647 M197128 qwerty95715 Jack93289 Alex95715 Alex95715 MПример выходных данных для приведённого выше примера входныхданных:1 место. qwerty (197128)2 место. Alex (95715)3 место. Jack (95715)

Формат задания

Развёрнутый ответ: короткого ответа здесь нет — оценивается само рассуждение. Разбор откроется после входа.

Решение по шагам

  1. Как рассуждать

    Для каждого игрока нам необходимо знать только максимальное количество очков, которое тот смог набрать, и момент времени, в который это количество было набрано.

Осталось ещё 12 шагов

  1. Будем хранить для каждого игрока имя…

  2. При добавлении новой записи будем пробегать…

  3. Если такого игрока нет, добавим его…

  4. Если есть, то сравним его предыдущий…

  5. После того, как считаны все данные, три раза…

  6. Если таких несколько, выберем из них игрока и…

  7. Выпишем его результат…

  8. Теперь в его очки запишем -1, чтобы в…

  9. Ниже приведён код решения на языке Pascal…

  10. Эффективный по памяти и времени. var…

  11. Ниже приведён код решения на языке Pascal…

  12. Не являющегося эффективным по памяти. var n…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка символьных строк»