Инструкция по установке задач

Автор: Андрей Рожков
Последнее обновлениее:

Содержание

1.Поиск задач.
2.Генерация тестов
3.Настройка даты и времени проведения олимпиады. Проверка постановки задачи.
4.Таблицы результатов
5.Возможные ошибки и решения:

1. Поиск задач.

Перед тем как поставить задачу в систему DL ее надо где-то взять. Один из вариантов - это самому придумать задачу и тесты к ней. Но можно взять уже существующие задачи из олимпиад по программированию прошлых лет. Такие задачи ищут в Интернете. Однако поиск задач при помощи поисковых систем - это дело очень долгое и утомительное. Поэтому ниже приведен список ссылок, по которым вы, возможно, найдете все вам необходимое.

Ссылки на задачи для командных олимпиад по программированию.


South Pacific	               http://www.sppcontest.org
Asia-Kolkata-Roorkee	       http://www.cse.iitk.ac.in/users/acm/
South Africa	               http://www.cs.up.ac.za/acm
Southeastern Europe	       http://www.acm.ro/
Southeast USA	               http://faculty.db.erau.edu/lehr/acm.html
Asia   - Beijing	       http://www.acm.tsinghua.edu.cn/
Mid-Central USA	               http://www.cs.smsu.edu/~mcpc/
Asia   - Aizu	               http://www.u-aizu.ac.jp/conference/ACM/
Asia   - Manila	               http://iits.uap.edu.ph/
Asia   - Seoul	               http://cs.kaist.ac.kr/~acmicpc/
Asia   - Kaohsiung	       http://guan.cse.nsysu.edu.tw/contest/
East Central North America     http://acm.ashland.edu/
Mid-Atlantic USA	       http://midatl.cs.vt.edu/
North Central North America    http://csalpha.ist.unomaha.edu/acmregn/index.html
Northeast North America	       http://cs.wsc.ma.edu/acm_ne_region.html
South Central USA	       http://acm2003.csc.lsu.edu/
                               http://acm2001.csc.lsu.edu/
                               http://acm2000.csc.lsu.edu/
Greater New York	       http://www.acmgnyr.org/
                               http://www.acmgnyr.org/year1999
Mexico and Central America     http://orion.qro.itesm.mx/~acm/
South America	               http://www.dcc.unicamp.br/~acmcntst
Asia   - Dhaka	               http://www.buet.ac.bd/acmicpc/
Pacific Northwest	       http://www.acmcontest-pacnw.org/
Rocky Mountain	               http://www.mesastate.edu/acm/rmrc/2003/index.html
Southern California	       http://socalcontest.acm.org/
Central Europe	               http://cepc.mimuw.edu.pl/
Northwestern Europe	       http://www.cs.lth.se/contest/nwerc
Southwestern Europe	       http://www.polytechnique.edu/icpc2003/
Asia   - Guangzhou	       http://acm.zsu.edu.cn/
Northeastern Europe	       http://neerc.ifmo.ru/
Asia   - Tehran	               http://sharif.edu/~acmicpc/
Africa and Arab	               http://acm.kuniv.edu/
Asia   - Bombay	               http://www.cse.iitb.ac.in/acm/

Ссылки на задачи для личных олимпиад по программированию.

Argentina http://www.oia.org.ar Australia http://www.csse.monash.edu.au/~dld/IOI/InformaticsOlympiad.html Bulgaria http://www.math.bas.bg/bcmi/ Croatia http://www.srce.hr/hsin/ Cyprus http://www.pspo.org.cy Czech Rep. http://mo.mff.cuni.cz/p/ http://www.ksp.sk/ipsc/ Germany http://www.bwinf.de/ Gr.Britain http://www.christs.cam.ac.uk/bio/ Indonesia http://www.toki.or.id/ Latvia http://vip.latnet.lv/lio/English/english.htm Lithuania http://aldona.mii.lt/pms/olimp/english/engl.html Luxembourg http://cil.cte.lu/ Macedonia http://twins.pmf.ukim.edu.mk/ioi/ Netherlands http://olympiads.win.tue.nl/nio/nio-e.html Norway http://www.nio.ntnu.no/ Poland http://www.mimuw.edu.pl/OI/ http://www.oi.edu.pl/english/index.html Singapore http://www.comp.nus.edu.sg/~noi/ Slovakia http://www.ksp.sk/mop/english/ USA http://www.usaco.org Ukraine http://www.olymp.vinnica.ua/ Россия http://olympiads.ru

2. Генерация тестов.

После того как вы нашли интересующие вас задачи и тесты к этим задачам, следует проверить тесты. Дело в том, что скорей всего тесты у Вас в не правиль-ном для DL виде. К примеру, встречаются следующие типы тестов: в условии задачи было сказано, что на входе 1 тест, а у меня в оригинальном тестовом файле несколько тестовых ситуаций, пусть, к примеру N, следовательно нужно составить N входных файлов, такая же ситуация и для выходных тестов. Другой случай, если по условию задачи на входе может быть несколько тестов, и все они "запиханы" в один файл, к примеру, tests.txt. Тогда их разбивка осуществляется чуть сложней, Вы ищете число в файле tests.txt (название файла может быть лю-бое) отвечающее за количество тестов, затем это количество тестов копируете, и вставляется в файл. Ваши созданные таким образом файлы, должны иметь име-на: 1.in, 1.out, 2.in, 2.out,:, N.in, N.out, соответственно *.in для входных файлов, *.out - для выходных (понятно, что для файла X.in, выходным является X.out, X = 1,2,:,N). Очевидно, что для больших тестов, с пару тысяч строчек, разбивание их вручную - удовольствие небольшое, поэтому можете с некоторыми модификациями согласно формату входных данных для определённой задачи использовать следующую программу :

Program GenTest;
Var
  i,k,j,n,m,a:longint;

Procedure Gen(j:longint);
Var s:string;
Begin
  Str(j,s);
  S:=s+'.in';
  Assign(output,s);  Rewrite(output);
End;

Begin
  Assign(input,'tests.txt'); reset(input);
  Readln(k);
  For i:=1 to k do
    Begin
      Gen(i);
      read(A); writeln(A);
      For j:=1 to a do
        Begin
          Read(n);
          Writeln(n,' ');
        End;
      Close(output);
    End;
  Close(input);
End.
Данная программа создаёт K файлов с именами 1.in, 2.in,:, K.in, в которые она записывает A чисел N (разных) и само число A (аналогичным образом можно поступить с выходными файлами *.out). Процедура Gen остаётся такой же, изме-няется только тело главной программы, причём наверняка, изменяться будут лишь аргументы циклов и ввод, вывод - readln, writeln - соответственно (проверено опытным путём). Вы можете создать EXE-файл данной программы и файл tests.txt:
4
1 3
4 5 2 6 3
3 4 2 5
2 8 9
и проверить её работу.
В общем случае следует поступать исходя из специфики задачи, т.е. если у Вас небольшие простые тесты, то может благоразумней переделать их вручную, нежели составлять соответствующую программу. Каждый решает сам, но один факт неоспорим, если тест большой - лучше написать программу, причём иногда это можно сделать легко и быстро, а иногда нужно потратить больше времени и подумать над структурой программы.

3. Настройка даты и времени проведения олимпиады. Проверка постановки задачи.

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

Также по возможности необходимо проверить составленные Вами тесты на правильность. Это можно сделать посредством отсылки авторских решений, которые у Вас могли оказаться. В случае отсутствия авторских решений задач, необходимо хотя бы визуально проверить корректность тестов, имеется в виду, формат входных и выходных данных. Не помешал бы также следующий вид проверки (наверное, точнее сказать НЕОБХОДИМ): послать на все задачи "программу-пустышку" - "begin end." и получить "не пройден 1-й тест", в некоторых случаях легко можно добавить пару writeln, чтобы получить "не пройден 2-й тест". На практике бывали случаи, когда такая отсылка помогла бы избежать проблем с неправильной установкой тестов во время олимпиады.

4. Таблицы результатов

Установить таблицу результатов в каком-либо курсе вы сможете только в том случае, если у вас есть права редактора курса (естественно права должны быть на тот курс, где вы хотите что-то изменить).
Так как в основном ставят задачи с реальных олимпиад по программированию, которые проходили есколько лет назад, то по этим олимпиадам имеются реальные результаты. Эти результаты необходимо поставить на DL, что бы студенты или школьники, после решения задач, могли сравнить свои достижения с оригинальными результатами.
Постановка таблиц результатов осуществляется следующим образом:

  1. Cначала вы смотрите ID олимпиады, к которой у вас имеется таблица результатов. Для этого просто наведите мышкой на название олимпиады и ее ID отобразится внизу

  2. Затем в каталоге \\Newit_server\dldata\ExtResults создаете папку, названием которой служит известный вам ID олимпиады.
  3. В созданную папку вы помещаете файл с таблицей результатов (допус-тим, он называется results.htm) и файл tables.cfg. В первой строке файла tables.cfg вы пишите название вашего файла с таблицей результатов (в данном случае это results.htm), во второй - строчку "Внешние результа-ты", причем обязательно в Win-кодировке, третья строчка должна быть пустой.

5. Возможные ошибки и решения:

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

О - Директория:* не является натуральным индексом
Р - папки где находятся все файлы(task.htm, task.cfg ...) должны называться 1,2,3.. и т.д.

О - Не обнаружена директория *\taskdir и файл task.cfg
Р - 1)вы забыли поместить в папку с задачей файл task.cfg
2)вы неправильно назвали файл

O - Не обнаружен файл *\taskrus.htm
Р - вы забыли поместить в папку с задачей файл task.htm

O - Не обнаружен файл *\task.xml
Р - вы забыли поместить в папку с задачей файл task.xml

О - В директории * количество входных файлов не соответствует количеству выходных
Р - в папке с задачей количество входных файлов не соответствует количест-ву выходных (причем может не хватать как входного (-ых) файла (-ов) так и вы-ходного (-ых) файла (-ых))

О - Ошибка в файле *\task.cfg :Количество тестов, объявленных в task.cfg =20 a в директории задачи 0 тестов (все тесты должны быть названы 1.in 1.out 2.in ...)
Р-проверьте названия своих тестов (все тесты должны быть названы 1.in 1.out 2.in ...)

О - Ошибка в файле *\task.cfg :Количество тестов, объявленных в task.cfg =20 a в директории задачи 19 тестов (все тесты должны быть названы 1.in 1.out 2.in ...)
Р - возможно нумерация ваших тестов начинается с 0 или же просто не хвата-ет тестов

О - Ошибка в файле *\task.cfg :Суммарная стоимость тестов должна совпа-дать с объявленной в TASK.XML |(24,1)
Р - проверьте файл task.cfg, посчитайте в нем сумму баллов за все тесты и сравните эту сумму с той суммой, которую вы объявили в task.cfg

О - 1)Файл *\task.xml: не найден тег NAME 
    2)Файл *\task.xml: не найден тег ENAME 
    3)Файл *\task.xml: не найден тег COST
Р - в файле task.cfg вы забыли указать имя задачи или количество баллов за задачу

О - Не обнаружена директория *\taskdir и файл task.cfg
Р - вы неверно назвали файл task.cfg

В - может возникнуть такая ситуация, когда задачу вы уже поставили, но вам понадобилось в ней что-то изменить (например, имя задачи, количество баллов за задачу и т.д.). Для таких случаев существует специальная программа DLMaster. С помощью этой программы можно проводить различные корректи-ровки. Но, к сожалению DLMaster-ом нельзя редактировать файл task.cfg. То есть редактировать можно, но все измененные данные DLMaster сохраняет в непра-вильной для DL кодировке, из-за чего в дальнейшем могут возникнуть проблемы
Р - если вам необходимо изменить файл task.cfg, то лучше всего сделать это непосредственно, т. е. открыть его каким-нибудь текстовым редактором и внести соответствующие изменения.

О - проблема с русской кодировкой текста в html-е.
Р - при возникновении такой проблемы необходимо поменять кодировку с Dos на Windows. Для этого надо:
1)открыть html файл для редактирования.
2) в Dos-кодировке (текст должен отображаться нормально) выделить весь текст (ctrl+A), удалить его (shift+del), перейти на кодировку Windows (F8), вставить текст обратно (shift+insert).
Сохранить изменения

О - при отправке архива может возникнуть следующая ошибка java.lang.RuntimeException:java.io.FileNotFoundException: C:\Inetpub\upload\ArchProcessorTemp\1\1.in (Access is denied)
Р - данная ошибка возникает при неправильных атрибутах отправляемых файлов (должен быть один атрибут "Архивный"). Чтобы поменять атрибуты у всех файлов необходимо (в Far-e) поставить курсор на корневой каталог, нажать ctrl+A (высветится меню атрибутов файлов), поставить метку в пункте "обраба-тывать вложенные папки", затем убрать метки там, где это необходимо, поста-вить метку "архивный", нажать enter. Для просмотра атрибутов файлов так же необходимо нажимать ctrl+A.

В - вы не сможете отослать архив с олимпиадой, объем которого более 20Мбт.
При такой проблеме надо попробовать поставить каждую задачу в отдельности, но если размеры отдельных задач также не позволяют это сделать необхо-димо, поступать следующим образом:
  1. Создать аналогичный задаче архив так, чтобы в задачах находились task.xml, task.cfg, task.htm, один входной файл и один выходной (минимальные требования для того, чтобы задача стала на DL). После этого каждой задачи будет, присвоен уникальный номер (он отображается над условием).
  2. Все задачи находятся в сети в каталоге dldata. В нем же в каталоге Archives находятся тесты к задачам. Тесты к каждой задаче находятся в каталоге имя, ко-торого такое же, как и уникальный номер данной задачи.
  3. Скопировать тесты и правильный task.cfg в данный каталог.