Добавление задачи в систему SPOJ. Структура и описание всех полей формы
Для получения возможности добавить задачу в систему SPOJ должно быть выполнено два условия. У вас должен быть аккаунт в этой системе. И на этот аккаунт должны быть выставлены привилегии problemsetter. Для этого необходимо обратиться к администраторам системы: http://sphere.pl/?id=66. Обычно они охотно дают возможность добавлять задачи в систему всем желающим.
Если у вас уже есть привилегии problemsetter, то вы можете начать отсюда: https://www.spoj.pl/problems/my/. На этой страничке отображаются все задачи, которые вы уже добавили в систему. Не забудьте, что вы должны быть залогинены, что бы попасть на эту страничку.
Вы попадете на промежуточную страницу, на которой необходимо будет задать уникальный код задачи, состоящий из 3-8 букв английского алфавита и некоторые начальные настройки. Проблема будет создана после нажатия кнопки Create.
На рисунке ниже показана форма для задачи Digits of PI
Далее рассмотрим по порядку значения каждого из полей.
1) Problem Code - уникальный код задачи, состоящий из заглавных букв английского алфавита в количестве от 3 до 8. Задается на этапе создания задачи, после чего сменить код будет нельзя.
2) Problem Name - название задачи
3) Co-authored by - группа пользователей SPOJ имеющих отношение к авторству задачи. Группа должна существовать (вы можете создать группу, используя ссылку "Add Group" в правом меню SPOJ). Вы можете использовать эту опцию, что бы дать соавторам доступ к задаче.
4) Source Code Limit - ограничение на размер исходного кода, который будут присылать пользователи, решающие задачу. Измеряется в байтах.
5) Resource - откуда взята идея для задачи.
6) Assessment Type - Тип задачи.
- Binary - тип задачи в "ACM" стиле, с двумя возможными исходами "accepted" или "wrong answer".
- Maximize Score - тип задачи, в котором необходимо набрать максимальное количество очков.
- Minimize Score - тип задачи, в котором необходимо набрать минимальное количество очков.
7) Checker - каким образом тестируется проблема Pyramid (PIII733) - автоматически, Manual - вручную.
8) Placement in main problem set - желаете добавить задачу в основной сборник задач SPOJ? Если "да", то в какую категорию.
9) Testable - контролирует возможность отсылки решений к данной задаче Available for use in 3rd party contests - контролирует возможность использования этой задачи в чужих соревнованиях
10) Problem body - описание проблемы в HTML формате.
11) Dynamic content - включает использование формы из пункта 12. Обычно не стоит это трогать.
12) Master Judge for Multiple Datasets - программа судья высшего уровня. Вы можете переписать эту программу. Текущий masterjudge доступен по ссылке. Для большинства задач подходит судья по умолчанию. Исходный код стандартного судьи высшего уровня ("Generic Masterjudge") будет приведен в описании ниже. Problem test sequence - последовательно тестов для задачи (например: #0 #1 #2). Все эти тесты должны быть определены (они задаются ниже на странице).
13) Available languages - список доступных языков программирования для задачи. Поставьте галочку напротив всех языков, которые должны быть доступны пользователям для решения вашей задачи.
14) Include new languages - если эта опция включена, то все новые языки программирования, добавленные после создания задачи, будут доступны пользователям для решения этой задачи. Merge all languages in ranklist - если эта опция выключена, то пользователи появятся в таблице рекордов отдельно для каждого языка программирования, на котором они решили задачу.
15) Modify - сохранить изменения. Preview - посмотреть превью для задачи. Continue editing after saving changes - применить изменения и остаться в этом же окне.
Далее рассмотрим по порядку значения каждого из полей во второй части формы.
1) В разделе "test data upload" располагается панель управления тестовыми данными для задачи. Для обычных задач обычно достаточно одного теста, (например, как на скриншоте), но если это необходимо, вы можете использовать более одного.
Разделы таблицы:
"Test" – название (индекс) теста для использования в поле "Problem Test Sequence".
"Input" – входной файл и его размер в байтах (вы можете скачать его, кликнув по цифрам).
"Output" – выходной файл и его размер в байтах (вы можете скачать его, кликнув по цифрам).
"Judge" – текущая программа судья (подробности далее).
"Time Limit" – ограничение по времени для данного теста (в секундах).
Набор предопределенных программ судей (Judge):
1. Ignore extra whitespaces - стандартный судья для программ типа "binary", т.е. проблем ACM-типа с двумя возможными результатами Accepted или Wrong Answer. Выходной файл сгенерированный программой должен быть таким же, как эталонный выходной файл на сервере, исключая пробелы и другие пустые символы.
2. Ignores FP rounding UP tp 10^-2 - стандартный судья для программ типа "binary", т.е. проблем ACM-типа с двумя возможными результатами Accepted или Wrong Answer. Этот судья используется для задач с численным ответом. Выходной файл, сгенерированный тестируемой программой, должен с точностью до второго знака после запятой повторять численные значения из эталонного файла.
3. Ignores FP rounding UP tp 10^-4 - стандартный судья для программ типа "binary", т.е. проблем ACM-типа с двумя возможными результатами Accepted или Wrong Answer. Этот судья используется для задач с численным ответом. Выходной файл, сгенерированный тестируемой программой, должен с точностью до четвертого знака после запятой повторять численные значения из эталонного файла.
4. Score is source length – количество полученных баллов за решение задачи будет равно длинне исходного кода в байтах, в случае если решение получит статус “Accepted”.
Если ни одна из предопределенных программ судей не подойдет для вашей задачи, то вы можете написать эту программу сами. Подойдет любой язык программирования поддерживаемый системой SPOJ. Примеры для языка Си будут приведены ниже.
2) В разделе "rejudge submission range" есть возможность запустить процесс проверки отосланных программ для данной задачи заново. Это необходимо в случае изменения системы начисления очков или изменения тестовых данных.