Кубок Тамтэк

29 апреля 2018
35 тысяч тому, кто делает это лучше других

Положение

«Кубок Тамтэк» — личное первенство по спортивному программированию для школьников и студентов г. Омска.

Цели соревнования — формирование интереса молодежи к отрасли информационных технологий, выявление будущих талантливых программистов, повышение статуса Омского региона во всероссийских и международных олимпиадах по спортивному программированию.

Организацией олимпиады занимается Оргкомитет олимпиады при технической и финансовой поддержке компании «Тамтэк», информационной поддержке ИМИТ ОмГУ и омской Школы Программистов.

Победители олимпиады получат денежные призы от компании «Тамтэк»:

  • 1 место: 35 000 рублей
  • 2 место: 25 000 рублей
  • 3 место: 15 000 рублей
  • 4 место: 5000 рублей
  • 5 место: 4000 рублей
  • 6 место: 3000 рублей
  • 7 место: 2500 рублей
  • 8 место: 2000 рублей
  • 9 место: 1500 рублей
  • 10 место: 1000 рублей

Форма проведения Олимпиады

Олимпиада проводится в два тура:

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

Число участников первого тура не ограничено. Результаты будут опубликованы на сайте «Кубка Тамтэк».

Второй тур — очный. Он будет проходить в офисе компании «Тамтэк» по адресу г. Омск, ул. Маршала Жукова, 21, 5 этаж. На второй тур будут приглашены участники, занявшие первые 30 мест в конкурсном зачете первого тура. Приглашения участникам будут высланы по электронной почте.

Результаты второго тура будут опубликованы непосредственно после окончания соревнования. После этого произойдет награждение победителей.

Для знакомства участников с тестирующей системой можно будет решить несколько тестовых заданий по правилам будущих соревнований. Необходима регистрация. Время выполнения и количество попыток не ограничено. Участие в тестировании по желанию. Результаты опубликованы не будут и никак не учитываются в итогах соревнования.

Регистрация участников

Для участия в соревнованиях все участники должны пройти регистрацию на сервере http://omsk-olymp.ru. Допускается регистрация участников во время первого тура.

Общие положения

На олимпиаде используется специальная система проведения контестов eJudge, которая позволяет проверять решения в режиме реального времени, предоставляет информацию о текущем положении участников, а также дает участникам возможность задавать вопросы жюри и получать на них ответы.

Первый тур проводится в течение 7 дней. Он будет открыт 12 апреля в 10.00 Омского времени (GMT+6), а закрыт 18 апреля в 22.00.

Второй тур будет проведен 29 апреля, начало в 10.00. Будет предложено 5-10 задач, время на решение — 5 часов. Жюри может увеличить время тура в случае каких-либо непредвиденных обстоятельств для всех участников либо для определенных лиц, подвергшихся влиянию данных обстоятельств (например, если на очном туре одна из машин выключилась, потерянное время будет добавлено к общему времени участника).

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

Все задачи предполагают, что входные данные читаются из стандартного потока ввода (stdin в С/C++) либо из файла input.txt. Программа должна выводить результат вычислений в стандартный поток вывода (stdout в C/C++) либо в файл output.txt на выбор участника. Форматы ввода и вывода подробно описаны в условии каждой задачи. Обычно вводимые численные данные разделяются произвольным числом пробельных символов (пробел, символ табуляции или символ перевода строки).

Во время проведения соревнования участники могут общаться с членами оргкомитета и жюри посредством тестирующей системы. Участник может отправить вопрос жюри, при этом вопрос должен быть сформулирован так, чтобы на него можно было ответить «Yes» или «No». Жюри вправе ответить «No comments», это обычно означает, что ответ на заданный вопрос находится в условии задачи. В первом туре ответы на вопросы, поступившие до 18.00 текущего дня, будут даны в течение дня, а на вопросы, поступившие после 18.00 — не позже, чем на следующий день. В последний день первого тура после 18.00 и во втором туре ответы будет даваться в течение нескольких минут.

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

Дополнительные положения очного тура

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

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

Проверка решений производится во время соревнований.

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

Конечные результаты очного тура объявляются на награждении.

Языки программирования и программное обеспечение

Допустимые языки программирования:

  • C
  • C++
  • Java
  • Pascal
  • Python

Для проверки задач тестирующая система использует следующие компиляторы:

  • GNU C 6.3.0
  • GNU C++ 6.3.0
  • Python 2.7.13
  • Python3 3.5.3
  • Java JDK 1.8.0_171
  • Free Pascal 3.0.4

Текcтовые редакторы и IDE:

  • Gnu Emacs 24.5.1
  • IDEA 2017.3
  • Code::Blocks 17.12
  • Eclipse IDE for Java 4.7.3
  • Lazarus 1.8.2
  • Pycharm 2018.1
  • Geany 1.29
  • Sublime Text 3143

Операционные системы:

  • Debian GNU/Linux 9.4 (stretch)

Проверка решений

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

Через небольшое время после посылки решения (обычно меньше минуты) участник получает сообщение с результатами тестирования, в котором указано количество пройденных тестов, количество набранных баллов на текущей попытке и результат проверки:

РезультатОписаниеВозможные причины
OK Задача прошла все тесты Решение правильное
Compilation Error В результате компиляции не создан исполняемый файл Синтаксическая ошибка в программе. Указан неверный язык программирования (например C для программы на C++)
Wrong Answer Ответ не верен Ошибка в программе. Неверный алгоритм решения.
Presentation Error Программа проверки не может проверить выходные данные, т.к. их формат не соответствует описанному в условии Неверный формат вывода. Выходной файл имеет неправильное имя или отсутствует. Программа не печатает результат. В выходной файл выдается лишняя информация.
Time Limit Exceeded Программа превысила установленный в условии предел времени. Неэффективное решение. Ошибка в программе.
Runtime Error Ошибка выполнения. Программа закончилась с ненулевым кодом завершения либо произошло аварийное окончание программы (crash). В этом случае результат работы программы не проверяется. Программа на языке C/C++ не завершается оператором ’return 0′. Ненулевой код возврата явно указан в программе. Программа превысила установленный в условии предел памяти.
Memory limit exceeded Превышен лимит по памяти Неэффективное решение. Ошибка в программе.
Security violation Нарушение правил безопасности Программа попыталась выполнить запрещённую операцию, например, удалить файл или создать сетевое соединение.
За данную ошибку участник дисквалифицируется, если будет доказано, что ошибка вызвана написанным участником кодом.
Check failed Ошибка проверяющей системы Обратитесь за помощью к администратору системы, членам оргкомитета

В решениях задач запрещены:

  • любой ввод/вывод, кроме чтения из стандартного ввода или файла input.txt и записи в стандартный вывод или в файл output.txt.
  • любое использование сетевых средств
  • любые другие средства или действия, которые могут нарушить процесс проверки и прохождения Кубка
  • использование ассемблерных вставок в исходном коде программы.

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

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

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

Система оценки

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

Алгоритм подсчета баллов принятого решения

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

Пример: допустим в группе есть 10 тестов, цена группы — 20 баллов, цена одного теста — 1 балл. Если из 10 тестов решение проходит только 9 тестов, то итоговая сумма баллов будет равна 9, а если все 10 тестов — 20 баллов.

  • если программа на все тесты всех групп тестов выдает верный ответ, задача оценивается в 100 баллов.

Штраф за дополнительные попытки

Каждое решение, принятое на проверку, кроме первого, оценивается как сумма баллов, набранных решением, минус количество попыток, принятых на проверку (ошибки компиляции не учитываются).

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

Определение победителя и призеров

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