Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×
Автор Fefer_Ivan, 10 лет назад, По-русски

Добрый день, Codeforces.

Недавно я добавил 46-той контест Андрея Станкевича в Тренировки. Теперь все контесты есть в тренировках. Вот полный список и группа со всеми контестами.

А теперь я хотел бы немного рассказать про то, что было мной сделано в процессе добавления этих соревнований.

 

Полный текст и комментарии »

  • Проголосовать: нравится
  • +782
  • Проголосовать: не нравится

Автор MikeMirzayanov, 10 лет назад, По-русски

Привет, Codeforces.

Уверен, многие в курсе — просто напомню. Polygon — это сервис для подготовки задач по программированию. Обычно используется в подготовке к олимпиадам, но часто и для учебных задач по информатике. Расположен он по адресу https://polygon.codeforces.com/ и открыт для всех желающих.

Я недавно обнаружил, что вот уже прошло более 5-ти лет как была создана система разработки задач Polygon. Самое время обобщить накопленный опыт использования.

Впервые о Polygon я публично рассказал в узком коллективе тренеров российских сборных на финале ACM-ICPC в 2009-м году. Я не скажу, что все восприняли разработку с энтузиазмом, были и те, кто высказал откровенный скепсис жизнеспособности и востребованности такой системы. Прошло 5 лет и на финале ACM-ICPC в Екатеринбурге Олег Христенко (человек-Снарк) сказал, что считает создание Polygon моей большей заслугой, чем Codeforces. Я, конечно, был удивлен, но Полигону это передал :-)

К началу работы над Полигоном (а это была осень 2008-го года) я приступил с точным осознанием необходимости подобной системы. К тому времени я уже был опытнейшим автором задач для большого количества контестов — бесконечное количество школьных Саратовских олимпиад, четвертьфиналы ACM-ICPC, мои задачи были на ВКОШП, РОИ, полуфинале ACM-ICPC NEERC, на финале TopCoder Open и еще много где. В большинстве случаев задачи разрабатывались в системе контроля версий, были разложены по папочками и структурировались какими-то полуформальными негласными правилами именования.

Ниже я попробую тезисно сформулировать, почему использование Полигона это хорошо, а неиспользование — плохо.

1. Полигон защищает от ошибок

В Полигон встроено множество средств автоматизации и самопроверки. Несколько примеров:

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

2. Архивы (пакеты) задач Полигона единообразны и машиночитаемы

Поразительно, но олимпиадное сообщество за более чем 20 лет активного развития так и не стандартизовало способ распространения задач. Задачи из Полигона имеют одинаковый и логичный способ организации файлов и являются машиночитаемыми. Файл problem.xml содержит не только базовую мета-информацию вроде ограничений на время и память, но и в деталях всё что понадобится для последующей автоматизированной работы над задачей.

Вот несколько примеров:

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

Мне не известны другие используемые настолько полные машиночитаемые форматы дескрипторов.

3. Полигон берет на себя долговременное хранение и доступность

Я прям сейчас могу открыть задачи Саратовского четвертьфинала ACM-ICPC 2009-го года, поправить тест. Все те, кто имеет права на задачу, могут сделать тоже самое. Все изменения будут видны всем авторам, они будут нотифицированы по email, а автоматические системы могут подхватить изменения после перевыпуска пакета. Во время правки я могу запустить решения, все тесты будут провалидированы, решения запущены.

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

4. Полигон сокращает порог вхождения в процесс подготовки задач

Авторами Codeforces являются участники соревнований разного уровня подготовки, разного культурного и профессионального бэгграунда, для многих — это первый опыт подготовки задач. Почти всегда они с легкостью понимают что и как надо делать, что и как добавлять.

Если Полигон не используется, то процесс обычно регулируется системой негласных правил (медленное решение называйте с суффиксом _slow, ну или _tl), неопытному участнику непонятно с чего начинать и как. Кроме того, обычно требуются знания основ работы с svn и командной строкой, а работа для пользователей Windows и Linux различается.

5. Полигон помогает управлять доступом

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

6. Полигон имеет issue-tracking

Возможность добавления и управления заданиями просто необходима при одновременной работе более чем одного разработчика. Более того, issue-tracking востребован и при индивидуальной работе. Работа структурируется, мелочи не забываются. Сколько я работал вне Полигона — верхом управления заданиями был специальный файлик с нумерованным списком заданий.

7. Полигон легко интегрируется с тестирующими системами

Полигон предоставляет машиночитаемые пакеты задач с подготовленными тестами (как для Windows, так и для Linux), так и с возможностью их сгенерировать при разворачивании пакета. Полигон имеет простой HTTP POST-based API для доступа к данным. При формировании POST-запросов надо передавать параметры login и password пользователя (и опционально revision).

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

8. Без Полигона требуется специальный софт на компьютере разработчика

Например, разработчику на Windows может понадобиться bash, чтобы запустить doall.sh, генерирующий все тесты. Или Java-программист будет вынужден поставить C++, чтобы скомпилировать чекер. Для компилирования условия ставьте LaTeX.

Полигон избавляет от всего этого, многое делается на стороне сервера.

9. Полигон безопаснее большинства альтернативных способов совместной разработки

Полигон использует HTTPS, привязку к IP-адресу (опционально, рекомендуется), привязку к браузеру, CSRF-токены всюду.

10. Полигон классифицирует и индексирует задачи

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

The End

Это только первые причины, что пришли мне в голову в два ночи. Уверен, что хорошенько подумав, можно сообразить и другие.

Вывод простой. Каждый раз, когда вы создаете задачу не в Полигоне, то бог убивает котенка.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +260
  • Проголосовать: не нравится

Автор PrinceOfPersia, 10 лет назад, По-английски

Hello everyone.

Soon, On the night after the Halloween, there will be a Codeforces gym contest, named Crypto cup 1.0.

Like its name, it's a cryptography contest and for all problems, you are given some sample encryptions encrypted using a certain algorithm and you have to write a program to decrypt the given messages.

There will be 18 problems and you have 6:30 hours to solve them. I hope it will be interesting.

Problems are prepared by me (PrinceOfPersia) and tested by Damon also thanks HosseinYousefi for editing problem statements.

For practicing cryptography, we recommend SecutiryOverRide's cryptography challenges.

Also, this round needs a little Algorithm and CS knowledge.Don't forget to pay attention to problem's titles, they might be helpful ;)

Currently, problems are being prepared, so you're unable to see the contest in gym contest list yet.

Problems are in decreasing order of difficulty.

UPD: Duration has been increased by half an hour, now it's 6:30 .

UPD2: Please note that contest will be held on November 1st, because it had overlap with Shahid Beheshti University ACM.

UPD3: Now it's in the Gym contests list.

UPD4: Registration is open.

UPD5: Contest is over.

I hope you enjoyed the problems.

Congratulation to the winners who solved all the problems :

  1. I_love_Hoang_Yen

  2. Team Flareon : Localhost, DiEvAl, Visconte

  3. kennethsnow

  4. niklasb

  5. 135678942570

Complete standing

Be aware, our standard rounds are coming... ;)

Полный текст и комментарии »

Анонс Crypto Cup 1.0
  • Проголосовать: нравится
  • +132
  • Проголосовать: не нравится

Автор MikeMirzayanov, 10 лет назад, По-русски

Добро пожаловать на 2014-2015 CT S02E07: Codeforces Trainings Season 2 Episode 7. Продолжительность тренировки — 5 часов. Тренировка открыта как для команд, так и для индивидуальных участников. После ее окончания вы можете дорешивать задачи тренировки или поучаствовать в ней виртуально, если не смогли принять участие одновременно со всеми. Пожалуйста, участвуйте в тренировке честно.

Так как это тренировка, то возможно набор задач будет расширен, если для значительного количества участников он окажется простым.

Условия задач будут на английском языке, ведь мы же готовимся к ACM-ICPC!

Удачи!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +26
  • Проголосовать: не нравится

Автор BYN, 10 лет назад, По-английски

And the winners are:

Bayan Programming Contest

(Participants Qualified for the Final Round of Bayan Programming Contest 2015)

  • If you are a t-shirt winner, double check your information on your Bayan Contest Profile.
  • T-shirts will be sent after the final event which is going to be on early 2015.
  • We might invite one of the t-shirt winners as our event blogger to the onsite final.
  • Finalists will receive invitation emails and will be asked to send us a copy of their passport. The invitation letter will be send from "contest at bayan.co.ir".
  • Unfortunately we found some cheaters and also people with duplicated accounts. As mentioned before they will be banned for ever from Bayan Programming Contests.
  • To view the Source codes, log in to contest.bayan.ir, select the round and on the scoreboard click on the score for each problem.
  • T-shirt Winners of Bayan Programming Contest 2014-2015
  • High ranked countries in top 50
  • High ranked countries in top 100

Полный текст и комментарии »

  • Проголосовать: нравится
  • +96
  • Проголосовать: не нравится

Автор lperovskaya, 10 лет назад, перевод, По-русски

Приглашаем вас поучаствовать в Кубке трёх четвертьфиналов — 2014 — командном онлайн-соревновании, которое будет проводиться параллельно с четвертьфиналами ACM в Москве, Минске и Санкт-Петербурге в конце октября — начале ноября. Турнир будет организован совместными усилиями команды Яндекс.Контест и жюри перечисленных четвертьфиналов ACM ICPC. Даты и времена проведения: Московский ЧФ (регистрация) — 26 октября, 11:30 по Москве, Западный ЧФ06 ноября, 12:00 по Москве, ЧФ в Санкт-Петербурге — 08 ноября в 12:30 по Москве.

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

Регистрация на онлайн-версию каждого четвертьфинала идёт непрерывно вплоть до старта соревнования. Создать команду в системе Яндекс.Контест вы можете по ссылке Мои команды. Все приглашенные в команду участники должны подтвердить своё участие в соревновании. После успешного создания команды необходимо зарегистрироваться на соревнование, указав вашу команду. Также возможно и индивидуальное участие.

Внимание! Логины, сгенерированные для соревнований Открытого кубка, предназначены только для них и для Кубка трёх четвертьфиналов работать не будут. Чтобы зарегистрироваться в системе Яндекс.Контест, достаточно завести почту на Яндексе.

Правила отдельных раундов совпадают с правилами официальных четвертьфиналов.

Потренироваться сдавать задачи в системе Яндекс.Контест можно, приняв участие в Тестовом соревновании.

UPD официальные результаты МосЧФ

UPD2 Онлайн-трансляция Западного Четвертьфинала уже завтра, в 12:00 MSK!

UPD3 Северный четвертьфинал начнется завтра в 12:30 MSK.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +114
  • Проголосовать: не нравится

Автор MikeMirzayanov, 10 лет назад, По-русски

Соревнование было перенесено в тренировки.

Завтра состоится четвертьфинал ACM-ICPC Южного подрегиона NEERC (2014). Жюри надеется на интересную борьбу, участники — на достойные результаты. Что же, завтра увидим.

А уже в ближайшую субботу (25-го октября) в 11:00 состоится онлайн-трансляция этого соревнования: [contest:481]. Вас ждут интересные задачи, которые жюри постаралось сделать интересными как для начинающих, так и опытных участников.

Конечно, контест будет нерейтинговым. Рекомендуется командное участие. Скорее всего, позже он будет перенесен в Тренировки.

Желаю участникам!

Председатель жюри MikeMirzayanov.

На закуску — виды Саратова:

Полный текст и комментарии »

  • Проголосовать: нравится
  • +353
  • Проголосовать: не нравится

Автор gridnevvvit, 10 лет назад, По-русски

Скоро, 24 октября, 21:00 MSK, состоится очередной Codeforces Round #275 для участников из обоих дивизионов. Обратите внимание на необычное время старта раунда!

Задачи этого раунда готовила команда Саратовского ГУ #3 в составе: Гриднев Виталий (gridnevvvit), Данил Сагунов (danilka.pro), Роман Киреев (RoKi).

Большое спасибо Максиму Ахмедову (Zlobober) за помощь в подготовке задач, Марии Беловой (Delinur) за переводы на английский, Михаилу Мирзаянову (MikeMirzayanov) за замечательные системы Codeforces и Polygon.

Распределение баллов:

Div1: 500 1500 1500 2000 2500

Dvi2: 500 1000 1500 2500 2500

Соревнование закончено, поздравляем победителей!

UPD:

Div1:

  1. tourist
  2. Petr
  3. subscriber
  4. uwi
  5. PavelKunyavskiy
  6. mmaxio
  7. Ra16bit

Div2:

  1. dickXD
  2. meodorewan
  3. charlie

Полный текст и комментарии »

  • Проголосовать: нравится
  • +191
  • Проголосовать: не нравится

Автор BYN, 10 лет назад, По-английски

Elimination Round will start today, 14:30 (UTC) and only contestants who have passed Qualification Round will be eligible to participate.

Score for each solved problem is calculated based on these values:

  • n = No. of accepted submissions
  • t = Contestant's submission time
  • p = Number of contestant's wrong attempts

To receive the latest news fast, follow us on twitter: @bayan

Update 1: The Elimination round is over, and let's face it: It was far from good!

Yes, we're aware of all the issues, and we know that nothing is more nerve-racking than facing those issues during a competitive contest. So, first thing first, we'd like to sincerely apologize for all the inconveniences caused.

In last hours, we thought that the contest has become too hard, so we made a major wrong decision: omitting a hard problem and adding a simple problem as our first question without enough time. Hint: never make any changes to the problem set in a hurry.

Update 2: Editorial is on the way. Source codes will also be avalible in a few hours.

Update 3: Unfortunately we have found some cheaters. As mentioned before they will be banned for ever from Bayan Programming Contests.

Update 4: The editorial is now available.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +101
  • Проголосовать: не нравится

Автор Nerevar, 10 лет назад, По-русски

Приветствую сообщество Codeforces!

В воскресенье, 19 октября, в 13:00 MSK состоится очередной раунд для участников обоих дивизионов.

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

В подготовке задач принимали участие HolkinPV, gridnevvvit, danilka.pro, Avalanche, IlyaLos, Fefer_Ivan и я.

Разбалловка стандартная: 500-1000-1500-2000-2500 (в обоих дивизионах).

UPD: Опубликован разбор задач.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +137
  • Проголосовать: не нравится