Привет!
Следующий этап Universal Cup, Run Twice Contest, пройдёт 30-31 декабря 2023 года. Как следует из названия, все задачи соревнования используют формат run-twice. Я — автор соревнования.
Изначально этот контест был этапом Петрозаводских летних сборов 2022 года. Планировалось провести его как этап Opencup, чтобы познакомить с форматом более широкую аудиторию. Увы, Opencup с тех пор не проводился. К счастью, появилась новая возможность поделиться соревнованием с участниками вне сборов. Спасибо Qingyu и другим админам Universal Cup!
Про Universal Cup
Universal Cup — серия командных соревнований по программированию. Помимо прочих достоинств, серия продолжает традиции Opencup. Этапы — контесты с разных сборов, региональные туры ICPC, локальные контесты и подобное. Участники получают свежие, разнообразные и качественные соревнования, а локальные авторы — возможность поделиться своими идеями.
Зайдите на сайт Universal Cup, чтобы поучаствовать!
Продолжительность соревнования — 5 часов. Есть семь интервалов времени для участия: первый начинается в 02:00 UTC в субботу, а последний — в 18:00 UTC в субботу. Подробности — в правилах.
Про Run-Twice
Run-twice — специальный формат задач. Классическая задача работает так; программы написаны с большой буквы, а данные с маленькой:
ввод > Решение > вывод > Чекер
- Решение участника читает ввод и записывает вывод.
- Чекер жюри проверяет вывод.
А задача в формате run-twice работает так:
ввод-1 > Решение > вывод-1 > Канал > ввод-2 > Решение > вывод-2 > Чекер
- Решение участника читает ввод-1 и записывает вывод-1.
- Канал жюри читает вывод-1 и записывает ввод-2.
- Решение участника запускается ещё раз, читает ввод-2 и записывает вывод-2.
- Чекер жюри проверяет вывод-2.
Важно, что во втором запуске Решение не знает ввод-1.
Известный пример такой задачи — IOI 2011 Parrots.
Естественное применение формата — задачи на кодирование и декодирование. Например, первый запуск из 123
делает one two three
, а второй запуск видит one two three
и восстанавливает 123
. Или первый запуск получает правильную скобочную последовательность и выдаёт её лексикографический номер, а второй запуск по номеру восстанавливает последовательность. В этих примерах Канал жюри проверяет вывод-1 на корректность и, возможно, добавляет что-то во ввод-2 — например, длину строки.
Оказалось, однако, что формат run-twice позволяет делать далеко не только это. В соревновании я хочу показать примеры задач, которые я научился делать в этом формате.