Вступление


Людям, которые увлекаются спортивным программированием, хорошо известны соревнования корпорации TopCoder. Среди них, пожалуй, самым популярным видом является Single Round Match, или SRM. Схема SRM'ов достаточно специфическая, и в чем-то неповторимая. Если кратко — сначала участники решают 3 задачи разных уровней сложности, потом некоторое время ищут ошибки у оппонентов, получая за это дополнительные очки.

Для организации таких соревнований TopCoder создали Java-апплет (TopCoder Arena). Также нашлись умельцы, которые для этой самой арены написали плагины, чтобы упростить жизнь себе и другим. Но установка последних часто вызывает трудности у начинающих SRM'щиков. Именно эта проблема стала мотивом для написания этой статьи.


С чего начать?


Начинать всегда нужно с самого начала, в данном случае — с установки арены. Как упоминалось ранее, арена — это Java-апплет. Следовательно, первое, что нам понадобится — это Java Runtime Environment (JRE) + Java Web Start (JWS), которые идут одним пакетом.

Установка Java

Шаг 1. Чтобы скачать Java, пройдите по ссылке www.java.com/ru/download/manual.jsp. Выберите нужный установочный файл из списка:


Шаг 2. Установите Java. На Вашем компьютере будут автоматически установлены необходимые компоненты, а именно JRE + JWS:




Установка TopCoder Arena

Шаг 3. Посетите сайт www.topcoder.com/tc.


В будущем на этом же сайте вы сможете заглядывать в календарь событий («Events calendar»), проверять рейтинг, брать участие в обсуждениях на форуме и многое другое. В данный момент нам нужна арена. В меню слева выберите «Competitions» — «Algorithm» — «Single Round Matches (SRM)» — «Launch Arena», после чего увидите примерно такое окно:


Примечание 1. Да, там написано, что у меня на установлен JWS, но на самом деле это не так. Просто он установлен не как отдельная составляющая, а идет в пакете Java со всем остальным.
Примечание 2. Пользователь Nicolette заметила, что после нажатия «Launch Arena» окошко с красной кнопкой может и не открыться. Вместо этого, по ее словам, сразу начнется загрузка «ContestAppletProd.jnlp». Что же, в конце концов, именно скачивание этого файла и является главной целью на данном шаге. Не пугайтесь, если что.


Жмите на большую красную кнопку, и Вам предложат скачать файл «ContestAppletProd.jnlp». Это и есть тот самый Java-апплет. Скачиваете и запускаете, в итоге увидите окно приветствия:


Здесь же Вам предлагаю зарегистрироваться, если Вы — новый пользователь.
Поздравляю, арена установлена. Следующая наша задача — установка и настройка плагина Moj.

Установка и настройка плагина Moj


Шаг 4. Скачайте файлы плагина Moj. Найти их можно, например, на форуме TopCoder:
apps.topcoder.com/forums/;jsessionid=84612D3FBAD554FF37DD381DD857BC20?module=Thread&threadID=597911&start=0&mc=60
или скачать прямо отсюда:
github.com/downloads/lovrop/topcoder-moj/moj_4.16.zip
Распакуйте скачанный архив в любую удобную папку.

Подключение Moj

Шаг 5. В арене откройте окно настроек редактора («Options» — «Editor»):


В результате увидите окно:


Шаг 6. Напротив поля «Common ClassPath» нажмите кнопку «Browse». В появившемся окне перейдите в папку с распакованным плагином:


и выберите три *.jar файла:
  • Codeprocessor.jar
  • FileEdit.jar
  • moj.jar

Шаг 7. В окне настроек нажмите кнопку «Add». Открывшееся окно заполните следующими значениями:
  • Name: Codeprocessor2.0
  • EntryPoint: codeprocessor.EntryPoint
  • ClassPath: аналогично шагу 6 выберите 3 указанных *.jar файла.



В окне настроек появилась новая строка, соответствующая установленному плагину. Чтобы сделать его плагином по умолчанию, выставьте соответствующие галочки «Default» и «At Startup»:


Настройка Moj

Шаг 8. В окне настроек выберите строку, соответствующую Codeprocessor2.0, и нажмите кнопку «Configure». В появившемся окне нажмите кнопку «Add». В результате появится пустая (белая) строка, в которую нужно вписать «moj.moj». В поле «Editor EntryPoint» введите «fileedit.EntryPoint».


Шаг 9. Напротив поля «Editor EntryPoint» нажмите «Configure». В появившемся окне в поле «Enter directory to read/write problems to» введите путь к папке, в которой будут появляться шаблоны кода при открытии новой задачи.


Во вкладке «Code Template» предлагается ввести шаблон кода, который будет прописан в файл исходного кода. В качестве примера могу предложить свой (если будете копипастить — не забудьте предварительно выбрать язык С++): pastebin.com/kwt4Whp3


Шаг 10. Нажимаем «Save»:


В окне настройки Codeprocessor'а нажимаем кнопку «Verify». Если все прошло успешно и подключено правильно — должны получить сообщение о том, что все компоненты найдены:


Опять жмем «Save», получая попутно следующее предупреждение:




На этом настройка завершается.

Проверка плагина


Для проверки дееспособности Moj'а, в арене выбираем любую комнату для тренировки («Practice rooms»):


В интерфейсе комнаты в поле «Choose problem» выберите любую из 3 задач. К слову, там же сразу и увидите количества баллов, которыми оцениваются задачи.
Открыв задачу, вы увидите следующее окно:


Именно здесь вы можете прочитать условие, проверить Activity Log и убедиться, что Moj сработал. Для верности (и для тренировки), откройте код и напишите решение. К слову, одна из фич TopCoder'а: нужно написать не целую программу, а всего лишь класс. Данные подаются как аргументы метода класса, результат возвращается через значение метода. Moj — дописывает все (по шаблону), что находится вне класса. Благодаря этому вы можете, запустив программу, проверить свой код на тестах из условия, которые автоматически прописываются Moj'ем прямо в исходный файл.
Когда класс готов — нажимайте последовательно «Save», «Compile», «Test» (опционально), «Submit». На этом написание кода обычно завершается, и решение считается полученным (но не обязательно правильным — корректность проверяется во время системного теста, в конце соревнования).

Заключение


Соревнования TopCoder значительно отличаются от других, в том числе от стандарта АСМ. На изучение всех особенностей, о которых здесь не было даже упомянуто, может уйти довольно много времени. Тем не менее, главное — начать, а опыт придет со временем.