Проходная клуба робототехники
Условие
В клубе робототехники стоит электронная проходная. За день она записала события: кто-то вошёл (команда in) или вышел (команда out).
Внутри клуба в начале дня никого нет.
Правила журнала:
inувеличивает число людей внутри на 1.outуменьшает число людей внутри на 1, но если внутри никого нет, это считается ошибкой проходной: число людей внутри не меняется, а счётчик ошибок увеличивается на 1.- «Пик» — это максимальное число людей внутри, которое было в какой-то момент дня. Пик меняется только из-за успешных входов.
Нужно вывести, сколько людей осталось внутри в конце дня, какой был пик, и сколько ошибок случилось.
Формат ввода
- Первая строка: целое число
n— количество событий. - Следующие
nстрок: по одной командеinилиout.
Формат вывода Выведите ровно 3 строки:
внутри: Xпик: Yошибки: Z
Ограничения
1 ≤ n ≤ 200
Пример Ввод:
7
in
in
out
out
out
in
out
Вывод:
внутри: 0
пик: 2
ошибки: 1Как решать — идея подхода
Приём: Симуляция (пошаговое моделирование)
Ключевое наблюдение: каждое событие влияет только на текущее число людей внутри, поэтому ничего «умного» искать не надо — достаточно честно промоделировать день, обновляя состояния после каждой команды.
Приём: симуляция (пошаговое моделирование). Он работает, потому что правила локальные: in всегда +1, а out либо -1, либо фиксирует ошибку, если внутри уже 0.
План решения:
- Заведи три переменные:
inside = 0(сколько внутри сейчас),peak = 0(максимум за день),errors = 0(сколько раз пытались выйти из пустого клуба). - Для каждой из
nкоманд: - если команда
in: увеличьinsideна 1 и обнови пик:peak = max(peak, inside). - иначе команда
out: - если
inside == 0, это ошибка: увеличьerrorsна 1,insideне меняй; - иначе уменьши
insideна 1. - После обработки всех команд выведи
inside,peak,errorsв нужном формате.
Сложность: O(n) по времени и O(1) по памяти.
Частая ошибка: обновлять peak после команды out или в конце дня. Пик должен считаться по всем моментам, и измениться он может только после успешного in.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки
- Перечневые олимпиады: что это и что дают — весь перечень Минобрнауки: уровни, срок диплома, разрезы по предметам и классам