Московская городская командная олимпиада по программированию среди школьников


Правила олимпиады

В олимпиаде принимают участие команды из 3-х человек (команды могут состоять из учеников разных классов и разных школ). Принять участие в олимпиаде могут команды Москвы и Московской области.

Жюри имеет право ограничить количество команд от одной школы.

На олимпиаде команде из 3-х человек предоставляется персональный компьютер и предлагается решить 6-12 задач. В лиге "B" команда может участвовать на своём ноутбуке. Продолжительность тура – 4-5 часов (в зависимости от лиги). Жюри может продлить время тура в случае каких-либо непредвиденных обстоятельств. По умолчанию участникам олимпиады предоставляется рабочее место под управлением ОС Ubuntu. Для решения задач участники могут использовать следующие языки программирования и соответствующие им системы разработки. Допускается замена версий языков программирования на более новые. По заявкам участников в образ может быть дополнен другими средами разработки или может быть предоставлен образ под управлением ОС Windows XP.

  1. Free Pascal 2.6.4
  2. GNU C/C++ 5.2.1
  3. Java 1.8
  4. Python 2.7
  5. Python 3.4.3
  6. PHP 5.6
  7. Perl 5.24
  8. Ruby 2.1
  9. Code::Blocks 16.01
  10. Eclipse 4.5 with JDT and CDT plugins
  11. Emacs 24.5.1
  12. Geany 1.25
  13. Gedit 3.10.4
  14. Vim 7.4
  15. Sublime Text 3 (evaluation version)
  16. Visual Studio Code 1.2 (+cpptools extension)
  17. NetBeans IDE 8.1 (Java, C/C++)

Во время тура разрешается пользоваться любой литературой и личными записями. Категорически запрещается пользоваться любыми носителями информации в электронном виде (CD и DVD дисками, USB flash drive'ами и др.), электронными устройствами (калькуляторами, электронными записными книжками и др.) и средствами связи (мобильные телефоны, планшеты и др.), общаться с руководителями команд.

В лиге "B" команда может принести и использовать ровно один ноутбук и писать тур на нём.

Во время тура участники решают предложенные задачи. Решением задачи является программа, написанная на одном из допустимых языков программирования. Программа не должна содержать вспомогательных модулей или файлов. Разные задачи можно решать на разных языках программирования.

Все задачи предполагают, что входные данные вводятся со стандартного потока ввода, результат выводится на стандартный поток вывода.

В задачах, в которых вводится последовательность чисел, числа могут разделяться одним или несколькими пробелами и (или) символами перевода строки. После последнего числа также могут идти переводы строки и (или) пробелы. Во всех задачах (если иное не оговорено в условии) в конце строк могут идти незначащие пробелы, после последней строки с данными могут быть незначащие пустые строки.

По мере готовности своих решений команда посылает их жюри для проверки. После этого команда может продолжать работу над другими задачами. После того, как жюри проверит решение (проверка занимает около 1-5 минут), команда получает сообщение с результатами тестирования.

Проверка решений производится во время соревнований. С помощью специального программного обеспечения команды посылают свои решения жюри. Размер исходного кода посылаемого решения не должен превышать 64 кб. Жюри транслирует программы, используя компиляторы командной строки, и проверяет их. Участники должны поместить все директивы компилятора в файлы решений.

Решения проверяются на заранее подготовленных жюри наборах тестов. Эти наборы одни и те же для всех команд и для разных попыток сдачи задачи одной команды. При этом программа должна на каждом тесте укладываться в отведенное время работы и не превышать ограничение на размер доступной памяти. Программа должна завершаться с 0 кодом возврата. Программа запускается на тестах до 1-го неправильного теста (как только найден тест, на котором программа не работает или выдает неверный ответ, дальнейшее тестирование программы не производится).

Решенными считаются задачи, решения которых проходят все тесты из тестового набора. Если программа не проходит хотя бы один тест, задача считается нерешенной. По каждой задаче команда может делать несколько попыток ее сдачи.

Команды ранжируются по числу решенных задач (чем больше задач решено - тем лучше), а при равном числе решенных задач - по штрафному времени (чем штрафное время меньше - тем более высокое место занимает команда). Штрафное время вычисляется следующим образом: для решенных задач штрафное время представляет собой время в минутах, прошедшее с начала тура до сдачи задачи, плюс 20 штрафных минут за каждую неудачную попытку сдать задачу. За нерешенные задачи штрафное время не начисляется.

Результат проверки сообщается команде в следующем виде. Команде сообщается результат проверки задачи, а в некоторых случаях - и номер первого непрошедшего теста (если команда получила сообщение "Wrong answer на тесте 11", то это значит, что тесты с 1 по 10 у команды прошли правильно).



Сообщение Номер теста сообщен? Когда возникает Возможная причина
OK Нет Решение зачтено Программа работает верно
Compilation Error Нет Компиляция программы завершилась с ошибкой 1. В программе допущена синтаксическая или семантическая ошибка
2. Неправильно указан язык Примечание: за попытки, завершившиеся "ошибкой компиляции", штрафное время не начисляется
Wrong answer Да Ответ не верен 1.Ошибка в программе
2. Неверный алгоритм
Presentation error Да Программа проверки не может проверить выходные данные, так как их формат не соответствует описанному 1. Неверный формат вывода
2. Программа не печатает результат или печатает его в файл с другим именем
3. В программе не закрывается выходной файл
4. Лишний вывод
Time-limit exceeded Да Программа превысила установленный в условии лимит времени 1. Ошибка в программе (например, бесконечная рекурсия)
2. Неэффективное решение
Memory-limit exceeded Да Программа превысила установленный в условии лимит памяти 1. Ошибка в программе (например, бесконечная рекурсия)
2. Неэффективное решение
Run-time error Да Программа завершила работу с ненулевым кодом возврата 1. Ошибка выполнения
2. Программа на языке C/C++ не завершается оператором return 0
3. Ненулевой код возврата указан явно


В течение тура (за исключением последнего часа) участники могут видеть текущие результаты всех команд. За час до конца тура результаты в общей таблице перестанут обновляться, о чем участникам будет сообщено. Однако ответы на посланные на проверку решения по-прежнему будут приходить и полученные результаты будут учитываться в окончательных результатах олимпиады.

Во время тура участники могут общаться только с членами своей команды, представителями жюри и дежурными по аудиториям.

За нарушение правил олимпиады команда может быть дисквалифицирована.

Жюри обладает исключительным правом определения правильности прохождения тестов, выставления оценок, определения победителей и дисквалификации участников. Жюри разбирает вопросы, возникающие в результате непредвиденных событий и обстоятельств. Решения жюри окончательны и обжалованию не подлежат. Апелляция не проводится.