Данный сайт содержит архив задач по олимпиадному программированию со встроенной проверяющей системой. Для участия в системе достаточно зарегистрироваться и перейти в раздел "Архив задач", где на текущий момент Вам будет предложено решить 1000 задач различной сложности. Сложность задач определяется числом от 1 до 100, из этих значений сложности формируется рейтинг, отражаемый в разделе "Рейтинг". Раздел сайта "Курсы" содержит набор задач, разбитых по разделам и темам, предназначен для дистанционного обучения языкам программирования и алгоритмам.
Все задачи предполагают решение в виде консольного приложения, работающего с файлами INPUT.TXT и OUTPUT.TXT, которые предназначены для чтения входных данных и вывода результата соответственно. Однако, все задачи можно решать без файлов, используя стандартные потоки ввода-вывода (ввод с клавиатуры и вывод на экран). Отправлять решения можно только зарегистрированным пользователям через специальную форму, либо в виде файла с одним из возможных расширений: *.pas, *.dpr, *.c, *.cpp, *.cxx, *.py, *.java, *.cs, *.go и *.bas. В случае загрузки файла компилятор определяется автоматически по расширению файла.
Проверяющая система использует следующие компиляторы:
Для отправки решений в файлах следует использовать расширения *.cpp или *.c. В разделе "Дистрибутивы" можно скачать одну из сред разработки (Code::Blocks или Dev C++). Однако, данные IDE содержат в себе компиляторы, отличные от компилятора в тестирующей системе. Данный компилятор вы можете скачать по ссылке: w64devkit-x64-2.0.0.exe(35 Мб). Компилятор поддерживает стандарт C++23 и запускается со следующими параметрами:
В качестве файла решения следует закачивать файл с расширением *.py. В разделе "Дистрибутивы" можно скачать транслятор языка Python и среду разработки WingIDE. Программа на сервере первоначально компилируется в байт-код и далее выполняется со следующими параметрами:
Это альтернативный компилятор языка Python, в ряде случаев позволяющий получать более эффективный байт-код в сравнении с Python. Программа на сервере выполняется со следующими параметрами:
Для отправки решений необходимо копировать исходный код программ в текстовое окно, указывая данный компилятор (версия 3.10.0.3547 от 25.09.2024). В случае отправки решения прикрепленным файлом следует использовать расширение *.pp. Компиляция программы выполняется со следующими параметрами:
В качестве файла решения следует закачивать файл с именем Main.java. Решение на Java должно содержать ровно один public класс с именем Main (имя класса может быть произвольным). В разделе "Дистрибутивы" присутствует компилятор Java и среда разработки Eclipse. Компилятор и виртуальная машина запускаются со следующими параметрами:
javac Main.java java -Xshare:dump -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=Main.jsa Main java -Xmx768m -Xss64m -Xms4m -XX:TieredStopAtLevel=1 -Xshare:on -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=Main.jsa -DACMP=true Main
Для отправки решений в файлах следует использовать расширение *.pas. В разделе "Дистрибутивы" можно скачать данный компилятор и среду разработки. Компилятор запускается со следующими параметрами:
В качестве файла решения следует закачивать файл с расширением *.go. В разделе "Дистрибутивы" можно скачать дистрибутив языка. Компиляция программы выполняется со следующими параметрами:
Node.js – одна из платформ по разработке программ на языке JavaScript. В качестве файла решения следует закачивать файл с расширением *.js. В разделе "Дистрибутивы" можно скачать дистрибутив языка. Программа на сервере выполняется со следующими параметрами:
node task.js
Примеры решения задачи "A+B" на Node.js
Для получения дополнительной информации кликните на интересующий Вас компилятор.
Каждое отправленное решение проходит на сервере проверку, как правило, не менее, чем на 10 тестах, специально составленных для анализа Ваших решений. Задача считается решенной только в случае прохождения всех тестов. В случае неверного решения процесс тестирования прерывается на тесте, определившем ошибку. Результаты тестирования Ваших задач можно видеть в разделе "Состояние системы", так же там отображаются результаты решений других пользователей. Результатом проверки является итоговое сообщение системы и номер теста, вызвавшего ошибку (если таковая имела место). По нажатии на номер сдачи в разделе "Состояние системы" пользователи могут просматривать тексты своих отправленных программ, а так же видеть там ошибки компиляции в случае вердикта "Compilation Error".
Возможные типы сообщений могут быть представлены в виде следующей таблицы:
№
Сообщение
Событие
Причина
1
Accepted
Программа работает правильно и прошла все необходимые тесты с соблюдением всех ограничений
Ошибка жюри ;)
2
Wrong answer
Неверный ответ. Результат работы программы не совпадает с ответом жюри
Неверный формат вывода или алгоритмическая ошибка в программе
3
Time limit exceeded
Превышен указанный в задаче лимит времени. Программа выполняется дольше установленного времени
Неэффективное решение или алгоритмическая ошибка в программе
4
Presentation Error
Ответ выведен в неверном формате
Не соблюдён формат вывода, описанный в задаче. Возможно, произошёл сбой программы до или во время вывода. В случае использования файлов возможно указано неверное имя выходного файла
5
Compilation error
Ошибка компиляции. В результате компиляции не создан исполняемый файл
Синтаксическая ошибка в программе или неверно указано расширение файла. Возможно, что при реализации на языке Java был использован класс, отличный от Main
6
Memory limit exceeded
Превышен указанный в задаче лимит памяти. Программа использует больше установленного размера памяти.
Неэффективный алгоритм, либо нерациональное использование памяти
7
Runtime error
Ошибка исполнения. Программа завершила работу с ненулевым кодом возврата. В этом случае результат работы не проверяется
Возможно, в программе произошло обращение к несуществующему элементу массива, деление на ноль и т.д. Возможно, программа на C++ не завершается оператором "return 0" или по иной причине вернула ненулевой код возврата
8
Compiling
Компиляция программы
Необходимо время для создания исполняемого файла
9
Running
Исполнение программы
Идет тестирование программы путем ее запуска для каждого имеющегося теста
10
Waiting
Ожидание
Программа находится в очереди тестируемых программ, либо не работает проверяющая система
Помимо раздела для тренировок "Архив задач" на сайте в разделе "Олимпиады" проводятся как личные, так и командные олимпиады различной сложности, в большинстве из которых могут принять участие все желающие. Личные олимпиады предназначены для индивидуального участия и в рейтинге здесь учитываются частичные решения, а время решения имеет меньший приоритет. В командных соревнованиях, как правило, принимает участие 3 человека и действуют правила ACM-олимпиад, где зачет идет по числу абсолютно верно решенных задач и штрафным балам по времени. Подробнее о правилах соревнований Вы можете прочитать здесь.
Пользователи, желающие вести собственную статистику, могут скачивать архив таблицы посылок решений в CSV-формате по данной ссылке (уже более 150 Мб). Обновление данного архива происходит раз в сутки.
Структура таблицы: ID решения, время отправки решения, ID пользователя, номер задачи, компилятор, вердикт, тест, время, память.
Рекомендуем предварительно ознакомиться с разделом "Новичкам". Если Вы еще не сдавали задачи на этом сайте, но уже горите желанием, то рекомендуем Вам начать со сдачи Задачи №1 "A+B" для понимания процесса работы проверяющей системы. Пример решения данной задачи приведен на данной странице выше (внутри описания компиляторов) на всех языках, предусмотренных в данной системе. Удачи!!!