Журнал турнира: очки, серии и техпоражения

тема: Моделирование процессов · уровень: средний

Условие

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

Правила журнала:

Нужно вывести итоговый отчёт после всех записей.

Формат ввода:

Формат вывода: Выведите ровно 4 строки:

Ограничения:

Пример Ввод:

7
win
win
loss
win
tech
win
win

Вывод:

очки: 13
победы: 5
лучшая серия: 2
техпоражения: 1

Как решать — идея подхода

Приём: Симуляция (подсчёт статистики по событиям)

Ключевое наблюдение: каждая строка журнала влияет на итог только через текущее состояние игрока. Значит, ничего «назад» пересчитывать не нужно — достаточно один раз пройти события и обновлять несколько переменных.

Приём: симуляция (пошаговое обновление состояния). Он работает, потому что правила для win/loss/tech локальные: новое значение очков, побед, техпоражений и серии зависит только от предыдущих значений и текущей записи.

Что хранить:

План:

Мини-сниппет для обновления лучшей серии: best_streak = max(best_streak, cur_streak).

Сложность: O(n) по времени и O(1) по памяти.

Частая ошибка: забыть сбрасывать cur_streak и при loss, и при tech, или обновлять best_streak не сразу после увеличения серии.

Решить задачу с автопроверкой на Python →

Куда дальше