Идея написать что-то подобное у меня возникла еще после сборов в Петрозаводске, где Михаил Мирзаянов прочитал лекцию о том, как правильно готовить контесты. На мой взгляд, лекция была очень правильная, и было бы здорово увидеть ее здесь, на Codeforces. Спустя некоторое время тема забылась, но фейл (полный провал - прим. Артема) с условиями на 58 раунде напомнил о ней. Хочу обратить внимание, что все написанное здесь это, конечно, наше мнение, но оно все же основано на довольно большом опыте.
Идея написать что-то подобное у меня возникла еще после сборов в Петрозаводске, где Михаил Мирзаянов прочитал лекцию о том, как правильно готовить контесты. На мой взгляд, лекция была очень правильная, и было бы здорово увидеть ее здесь, на Codeforces. Спустя некоторое время тема забылась, но фейл (полный провал - прим. Артема) с условиями на 58 раунде напомнил о ней. Хочу обратить внимание, что все написанное здесь это, конечно, наше мнение, но оно все же основано на довольно большом опыте.
Итак, из чего состоит условие задачи? (сверху вниз, затем слева направо):
- Название
- Ограничения (Time Limit, Memory Limit)
- Текст условия
- Перевод условия*
- Формат входных данных
- Формат выходных данных
- Источник и приемник данных
- Тесты
- Комментарии к тесту*
* - опционально
Теперь обо всем по порядку.
Название
Единственная часть, которая может быть предоставлена авторам без ограничений. Однако:
Ограничения
Ограничения обязательно должны быть указаны для каждой задачи! Кроме того, нужно сообщать об особых параметрах для некоторых языков (например Java) если такие есть.Текст
Самая важная часть задачи. В ней, как правило, авторы любят проявлять свою фантазию. Следует понимать, что текст можно разделить на две части: сказку и полезную информацию.
Перевод
Все правила, обозначенные для текста на родном языке, должны применяться и здесь. Кроме того, часто бывают ситуации, когда вы не знаете как перевести ту или иную фразу. У вас есть два варианта:
Формат входных данных
Арни огорчает описание входных данных на полстраницы. В этом пункте должен описываться формат данных, а никак не сами данные и их назначение. Например, если в задаче нужно найти точку пересечения двух прямых, то в тексте должно быть сказано, что заданы две прямые, а в этом пункте - формат, в котором эти прямые задаются.
Условно можно разделить задачи на две категории: задачи на форматирование текста и все остальные. Все нижесказанное относятся только к задачам второго типа.Формат выходных данных
То же самое: только формат данных, а не что вы требуете в задаче.
Потоки ввода и вывода
Как правило, используются стандартные потоки (stdin, stdout) или файлы.
Тесты
О правильной подготовке тестов подробно рассказано в презентации Михаила Мирзаянова. Очень надеемся, что она появится на Codeforces.
Комментарии к тестам
Удачи и успешно проведенных контестов!