Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 13 лет назад, По-русски
На этот раз "порадовал" Facebook. Интересно, моя мама смогла бы восстановить пароль?
 
Пишите в комментариях этого поста, если на Codeforces что-то не переведено или переведено криво.

UPD. Туда же несогласования времен и падежей. Опять пример из Facebook: "Учился в Саратовский Государственный Университет. Женат. Из г. Саратов, Саратовская обл. День рождения: 21 Январь 1981 г.". По мне надо так: "Учился в Саратовском Государственном Университете. Женат. Из г. Саратова, Саратовской обл. День рождения: 21 Января 1981 г.". Хотя здесь я понимаю, что все сложнее для реализации. Они же большое количество языков поддерживают. И еще не уверен как лучше "из города Саратов" или "из города Саратова" (странно как-то два слова подряд склонять).

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Это список Часто задаваемых Вопросов и Ответов, относящихся к работе Codeforces.
  1. Что такое Codeforces? Что это за сайт/ресурс?
  2. Что надо сделать для участия в соревновании? Нужна ли предварительная регистрация?
  3. По каким правилам проводятся соревнования?
  4. На каких языках здесь можно решать задачи? Есть примеры решений?
  5. Я бы хотел провести раунд Codeforces по своим задачам. Что для этого надо сделать? Положено ли вознаграждение авторам?
  6. Какие еще существуют правила на Codeforces?
  7. Какие технические детали полезно знать о тестирующей системе Codeforces?
  8. Что такое рейтинг, дивизионы?
  9. Что такое вклад?
  10. С какими постами в блогах полезно ознакомиться?
  11. Я заметил, что на сайте публикуются решения всех участников и тесты с прошедших соревнований. Каким образом разрешено их использовать?

Вопросы и ответы:

  1. Что такое Codeforces? Что это за сайт/ресурс?
    Codeforces — проект, объединяющий людей, которые интересуются и участвуют в соревнованиях по программированию. С одной стороны Codeforces является социальной сетью, посвященной программированию и соревнованиям по программированию. С другой стороны — это площадка, где регулярно проводятся соревнования, навыки участников отражает рейтинг, а прошедшие соревнования могут быть использованы для подготовки. Codeforces постоянно развивается, и в наших планах усовершенствование платформы для предоставления возможностей проводить контесты участникам самостоятельно, наполнение проекта учебным контентом, развитие Codeforces как тренировочной и учебной платформы.
  2. Что надо сделать для участия в соревновании? Нужна ли предварительная регистрация?
    На Codeforces регулярно проводятся соревнования, участие в которых бесплатно и открыто для всех. Каждый месяц мы проводим ориентировочно шесть соревнований. Для участия вам необходимо зарегистрироваться на сайте (если у вас есть OpenID или Gmail-аккаунт, то не придется даже запоминать пароль), и зарегистрироваться на предстоящее соревнование. Убедитесь, что вы присутствуете в списке зарегистрированных на контест до окончания регистрации. Обычно, если вы не можете принять участие в соревновании официально (например, это соревнование для второго дивизиона, а вы в первом), то можно зарегистрироваться на соревнование для участия вне конкурса.
  3. По каким правилам проводятся соревнования?
    Обычно, они проходят по специальным правилам Codeforces. Если оговорено особо, то могут быть использованы правила международных студенческих соревнований по программированию ACM-ICPC или какие-либо другие модификации. Если коротко, то на соревнованиях по правилам Codeforces вы пишите решения задач, которые во время соревнования тестируются только на небольшом наборе тестов. Прошедшие этот набор тестов решения, их авторы могут блокировать (отказаться от перепосылки решения по этой задаче в будущем, даже в случае обнаружения у себя ошибки). Такие авторы получают возможность просматривать исходники других участников, искать в них ошибки и предлагать тесты, на которых эти решения не работают. Таким образом, можно взломать чужое решение, заработав на этом баллы. После соревнования, все решения, которые прошли претесты и не были взломаны, тестируются на финальном наборе тестов. Задачи дешевеют во время соревнования (чем сдал быстрее, тем больше баллов), неудачные взломы снимают баллы, а успешные — добавляют. Ознакомьтесь с подробной версией правил перед участием.
  4. На каких языках здесь можно решать задачи? Есть примеры решений?
  5. Я бы хотел провести раунд Codeforces по своим задачам. Что для этого надо сделать? Положено ли вознаграждение авторам?
    Хотите провести раунд? Отлично! Мы очень рады! Пожалуйста, прочтите пост и следуйте инструкциям из него.
  6. Какие еще существуют правила на Codeforces?
    Мы не имеем четкого Великого-Свода-Правил-Поведения-На-Codeforces. Однако, разумеется, здесь надо вести себя в соответствии с традиционными требованиями поведения в общественных местах и тематических сообществах. Следующие пункты, конечно, необходимо соблюдать:
    • Не создавайте более одного аккаунта, если вы забыли пароль, то воспользуйтесь системой напоминания пароля.
    • Не используйте грубый, оскорбительный или вводящий в заблуждение хэндл.
    • Не используйте чужое фото в профиле, это некрасиво и вводит в заблуждение членов сообщества.
    • Не грубите, не оскорбляйте других участников и представителей администрации, старайтесь быть вежливым, чтобы с вами было приятно общаться.
    • Участвуя в личных соревнованиях, не общайтесь на тему задач с другими участниками, не используйте чужой код для вставки его в свои решения. Если соревнование командное — обсуждайте задачи только с членами команды.
    • Не пытайтесь дестабилизировать работу как сайта, так и проверяющей системы. Ваши программы должны взаимодействовать только с консолью (для задач со стандартным вводом-выводом) или файлами входных и выходных данных.
    • Не публикуйте, не распространяйте свои решения и идеи решений во время соревнования.
  7. Какие технические детали полезно знать о тестирующей системе Codeforces?
    Система Codeforces напоминает классические Online Judges. Решения тестируются на заранее приготовленных тестах (или взломах, предложенных другими участниками). В результате вы получаете вердикты, смысл которых понятен из названия. Отдельно стоит отметить, что на Codeforces нет вердикта "Ошибка представления данных" (Presentation Error), подобная ситуация трактуется как "Неправильный ответ" (Wrong Answer). Все сомнительные вердикты ("Ошибка тестирования" и др.) не учитываются при подведении результатов, равно как и решения, упавшие на тесте 1 (в задачах, где более одного теста).
  8. Что такое рейтинг, дивизионы?
    Участвуя в соревнованиях на Codeforces, участники увеличивают (или уменьшают) свой рейтинг, который отражает их умение решать задачи. Рейтинг является модификацией рейтинга Эло, некоторые детали можно прочитать в более подробном изложении. В соответствии с рейтингом, участники делятся на два дивизиона: второй (послабее, любители) и первый (посильнее, профессионалы). Участники, не принимающие участвующие в соревнованиях, и те, чей рейтинг менее 1900, относятся ко второму дивизиону. Рейтинг 1900+ обозначает участие в первом дивизионе. Обычно на Codeforces проводятся два вида соревнований: для участников второго дивизиона (участники первого могут принимать участие в них вне конкурса) и для обоих дивизионов. Первый вид соревнований содержит более простые и учебные задачи.
  9. Что такое вклад?
    Голоса за посты и комментарии пользователя изменяют его вклад. Вклад призван отображать полезность участника сообщества. Система подсчета вклада несовершенна, в будущем правила ее подсчета будут изменены.
  10. С какими постами в блогах полезно ознакомиться?
  11. Я заметил, что на сайте публикуются решения всех участников и тесты с прошедших соревнований. Каким образом разрешено их использовать?
    В самом деле, мы публикуем материалы с прошедших соревнований и они могут быть использованы, например, для индивидуальных занятий. Использование материалов на других Online Judges, публичных соревнованиях и т.п. запрещено. Обязательно прочтите лицензию, перед использованием материалов.
    Для того, чтобы просмотреть свое или чужое решение, достаточно кликнуть на его идентификатор на странице "Статус". Во всплывающем окне вместе с исходным кодом, будет находиться протокол тестирования, содержащий все тесты. Со страницы со списком задач можно перейти на список правильных решений по заданной задачи. Внизу страниц "Статус" (и других со списками решений) есть возможность сортировки решений по различным критериям.

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем привет!

Скоро состоится (в понедельник, 21-го февраля) первый экспериментальный Unknown Language Round #1. Это будет обычный нерейтинговый контест по правилам ACM-ICPC. Единственная особенность - задачи во время этого раунда можно будет сдавать только на одном, не очень популярном языке. Каком? Секрет!

MikeMirzayanov

UPD: Анонс языка сегодняшнего контеста состоится примерно за пять минут до его начала. Всем удачи!

Язык программирования сегодняшнего контеста это - Tcl. Tcl (от англ. Tool Command Language - "командный язык инструментов", читается "тикль" или "ти-си-эль") - скриптовый язык высокого уровня (из статьи в Википедии). Вот пример программы, которая читает и выводит одно целое число:
 set line [gets stdin]<br> scan $line "%d" n<br> puts $n 
Во время контеста можно пользоваться вкладкой "запуск" в интерфейсе контеста.

UPD: Соревнование закончено: ссылка на результаты. Вам понравилось?

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

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

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

Библиотека testlib.h

Здесь пойдет речь о библиотеке testlib.h, которая была написана мной достаточно давно — году в 2005-ом. Незадолго до этого было объявлено об отказе на финале ACM-ICPC от использования Pascal, популярность набирал TopCoder (где так же нет Pascal/Delphi). Все это приводило к мыслям, что писать чекеры на Pascal вечно невозможно, да и не всегда достаточно удобно, да и кроссплатформенным этот вариант назвать трудно — по-моему далеко не все testlib.pas (которых несколько разновидностей) компилируются free pascal.

Про чекеры

Так как не все читатели являются авторами задач, то давайте проясним смысл этого слова. Чекером называется программа, которая читает входной файл (тест), вывод проверяемой программы, предполагаемый ответ и выводит вердикт относительно корректности вывода проверяемой программы. Обычно, бывают следующие вердикты: OK (ответ верен, представлен один из правильных ответов), WA (ответ неверен), PE (формат вывода не верен, я этот вердикт не люблю), FL (произошел epic fail — например, чекер выяснил, что решение участника вывело более оптимальный ответ, чем авторское решение). Конечно, при тестировании подготовленных задач не должен появляться FL, но о нем мы расскажем чуть позже.

Конечно, в большинстве задач не требуется "интеллектуальный" чекер, так как условие задачи однозначно определяет вывод участника. Более того, на многих соревнованиях по техническим причинам (TopCoder) или в силу традиций (большое количество ACM-ICPC regionals) это стало правилом. С другой стороны, даже при однозначном выводе могут быть тонкости — на сколько позволять участникам не соблюдать формат. Возможны следующие моменты (и не только они):

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Вот, что пришло сегодня на мой адрес электронной почты:

Dear Participant,

The 2011 World Finals is postponed.

Contact your travel agent or airline for a refund or travel voucher. Consular Travel Warnings should make it easier for you to avoid penalties.

The earliest date will be the last week of May. Please block the last week of May on your calendar.

Please block the last week of June on your calendar. The month of July and the first two weeks of August are also under consideration.

We hope to announce the date by February 10th. We plan to announce both the place and date by February 28th.

I look forward to seeing every one at a spectacular World Finals later this year.

Bill

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

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

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

Всем привет!

Этот контест был подготовлен в срочном порядке Артемом Раховым и другими участниками сборов в Петрозаводске от Саратовского ГУ. Пришлось оторваться от дорешивания, не пойти на лекцию Виталия Гольдштейна (не сердись, Виталий), но зато раунд подготовлен и мы ждем вас — участников.

Как говорится, "happy hacking"
MikeMirzayanov и команда Codeforces

UPD. Контест закончен, всем спасибо за участие. Победил участник из Китая winmad. Лучший участник вне конкурса: anonymous. Последняя задача контеста поддалась только ему, браво!

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

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

Закончился 2010 год, и, конечно, все уже готовы не только встретить Старый Новый Год, но и узнать имена тех, кто награжден медалями Кормена за 2010 г.

Итак, в номинации "Лучший участник-школьник 2010" награжден ... барабанная дробь ... Геннадий Короткевич. Приняв участие в 5-ти из 6-ти олимпиад ЗКШ, проводимых проектом Codeforces, Геннадий одержал победу в каждом из них! В командном зачете он принимал участие индивидуально, но это не помешало ему обойти всех претендентов на победу.

В номинации "Лучший участник 2010" медаль Кормена достается ... Геннадию Короткевичу! За прошедший год Геннадий принял участие в 15-ти раундах Codeforces из них 5 побед, а в 9-ти раундах он вошел в пятерку лидеров. Феноменальный успех усиливается тем фактом, что Геннадий учится в 10 классе. Браво, tourist! Мы желаем Геннадию новых побед и достижений!

В номинации "Лучший автор задач 2010" награждается Наталья Бондаренко. Ярко закончив в этом году карьеру участника ACM ICPC (напоминаю: золотая и серебряная медали финала, победа на NEERC 2008), Наталья учится в аспирантуре Саратовского ГУ и активно помогает Codeforces проводить раунды, подготавливая интересные задачи. На ее счету участие в подготовке 5-ти соревнований, полная разработка 19-ти задач и участие в подготовке еще большего числа. Спасибо, natalia. Мы с радостью отдаем тебе победу в этой номинации и надеемся на дальнейшую плодотворную работу.

Спасибо всем тем, кто проявил интерес к проекту в прошедшем году. Мы очень рады, что наши соревнования находят своих участников, и вы делитесь впечатлениями и общаетесь на страницах Codeforces.

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

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

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

Всем привет!

Вернувшись вчера с отдыха (да-да несколько дней плотной работы над Codeforces я называю именно так), я с увлечением прочитал посты, комментарии и снова посты, посвященные произошедшему инциденту. Я очень рад, что это происшествие не оставило равнодушным сообщество и нашлись люди, готовые конструктивно обсуждать произошедшее и предлагать свои варианты исправления. Отмечу, что в самом деле, текущий способ учета вклада оставляет желать лучшего. В свое время (ровно год назад!) он был написан за короткое время и имел своей целью с одной стороны подсчет вклада некоторым простым образом (для того чтобы "было" и накопления статистики), а с другой стороны, от него требовалась расширяемость - то есть такой способ организации хранения, при котором позже можно изменить формулы, принципы подсчета и пересчитать исторические данные.

В настоящий момент, когда сообщество выросло и немного окрепло вклад стали видны его слабые места и проблемы. Значит, самое время исправить ситуацию.

Поразмыслив над ситуацией, почитав мнения сообщества, я думаю, что разумно будет поступить следующим образом.

  1. Вклад, как явление, надо оставить, но модифицировать способы его подсчета.
  2. Делать каких-то больших вложений в усложнение системы мне не хочется - есть большое количество других направлений, которые более ценны и востребованы.
  3. Не хочется делать систему излишне управляемой некоторой диктаторской волей и т.п. Я против введения модераторов, способный решать все и вся. С другой стороны предоставлять повышенные права к управлению сообществом авторитетным пользователям - логичный и правильный шаг.
  4. С мнением natalia "Все члены сообщества Codeforces важны ему и должны иметь равные права при голосовании." я не согласен. Я за то, чтобы мнение профессионалов в профессиональном сообществе ценились/учитывались больше. Сообщество у нас профессиональное. Я считаю, что на симпозиуме врачей те, кто добился больших успехов на профессиональном поприще, кто более опытен, имели больший вес, чтобы к их мнению прислушивались больше. Аналогично и здесь. Если новичок высказывает правильные, логичные и справедливые мнения, то те же авторитеты поставят ему плюсы, что поднимет авторитет первого. Авторитет надо заслуживать некоторое время и прикладывать к этому определенные усилия. Другой момент, что вес голоса авторитета не должен быть сверхбольшим (некоторые цифры идут ниже по тексту).
  5. Давайте перейдем к предполагаемым принципам работы.
    • Ограничить число голосований в сутки. Разделять голосования за посты и комментарии. Люди, имеющие серый рейтинг или не участвующие в контестах голосовать не могут (читайте выше про профессиональность сообщества). Далее ограничения растут в зависимости от авторитета (т.е. зависят от вклада и рейтинга). Можно сделать как-то так (квоты на сутки):
      Положение по вкладуГолосаДобавка к авторитету
      В top103 за топик, 9 за комментарии 3
      В top50 2 за топик, 6 за комментарии 2
      Остальные 1 за топик, 3 за комментарии 1
      Положение по вкладу надо, наверное, учитывать, используя данные последних месяцев четырех.
      Положение по рейтингуГолоса Добавка к авторитету
      Красный 3 за топик, 9 за комментарии 3
      Желтый 2 за топик, 6 за комментарии 2
      Синий, зеленый 1 за топик, 3 за комментарии 1
      Серый, не-участник контестов или не участвовал слишком долго (четыре месяца?) не голосует 0
      Период в последний строке должен совпадать с периодом сбора статистики по первой таблице, может его стоить сделать другим? Кажется, что лучше выбирать минимум для участника по обоим трекам, чтобы определять дневные квоты голосования.
    • Не более половины дневной квоты (считать отдельно по топикам/комментариям) можно отдавать одному автору.
    • Не изменять рейтинг автора на основании оценок его комментария или топика, если за них слишком мало голосовали. Например, надо более одной оценки за комментарий, более трех за топик.
    • Сделать у топиков параметр соответствия тематике сайта (реклама/бред, явный оффтопик, просто топик, разбор/учебный материал/умный анализ работы Codeforces/отчет о контесте/тематическое другое). Дать возможность админу или авторитетам устанавливать этот параметр. Численно этот параметр может быть (0, 1, 2, 3).
    • Считать авторитет автора как сумму по третьим столбцам в табличках выше и учитывать голоса с такими весами.
    • Считать вклад автора как сумму оценок по его комментариям (учитывать веса) + утроенных оценок по топикам (учитывать веса). Во втором слагаемом надо учитывать как-то параметр соответствия тематике. Например, умножать сумму по топику на этот параметр (если она положительна).
    • Отображать вклад участника как некоторую функцию от накопленной сумму (конечно, монотонную). Функция должна сначала достаточно быстро расти, потом медленней. Возможно, квадратный корень подойдет.

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

Спасибо за внимание, жду комментариев.
MikeMirzayanov

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Да, в копилке Codeforces набралось порядочное количество интересных задач, чтобы сделать свой problemset. Вот и сегодняшний день не прошел даром, и вашему вниманию представлен архив задач Codeforces. Пожалуй, единственное зачем он нужен - это чтобы было легче дорешивать задачи и понимать какие решены, а какие нет. В комментариях просили. Я не думаю, что от этой функциональности мы будем многого ждать, но кому-то станет удобнее: а это хорошо.

Архиватором выступил
MikeMirzayanov.

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

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

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

Всем привет!

Устали отдыхать? Требуется ваша помощь.

За период с 31-го декабря по сегодняшний день я сделал большое количество изменений в устройстве Codeforces. Изменения затронули только внутренности, так что каких-либо изменений в интерфейсе вы не заметите. Тем не менее, за это время было изменено около 150 файлов проекта, схема базы данных, некоторые принципы организации хранения данных. Короче, после всего этого я совсем не уверен, что все работает как надо (хотя, конечно, на тестирование я тоже потратил время). По этой причине я решил организовать Codeforces Testing Round #1, который будет нерейтинговым и единственная его цель - комплексное тестирование проекта в условия, приближенных к боевым.

На раунде ваш ждет три задачи из категории "баян", но, надеюсь, их решение все равно принесет вам удовольствие.

Спасибо за помощь в подготовке раунда Артему Рахову, Марии Беловой и Максу Иванову.

MikeMirzayanov.

UPD: Всем спасибо! Раунд состоялся. Крупных багов не замечено. Отзывы и замечания пишите в комментариях.

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

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

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

С Новым Годом!

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

На Новый Год принято дарить подарки. Не знаю, что можете вы приготовить для Codeforces (задачи? статьи?), а мы решили, что на Новый Год иногда происходит то, чего не бывает в другие дни. В новогодние праздники (с 31-го декабря по 3-е января) в пользовательском интерфейсе (профиль -> настройки -> хэндл) можно будет сменить свой хэндл на любой другой. В Новый Год с новым хэндлом!


Весело отмечающая праздник,
команда Codeforces

P.S. Спасибо хабрапользователю anatoly-rr за столь красивый календарик.

UPD. Будьте осторожны. Если вы захотите временно сменить свой хэндл на смешной/поздравительный, то кто-то сможет занять ваш старый :)

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем привет!

Приглашаю вас принять участие в Codeforces Beta Round #48. В этот раз я выступил в роли автора контеста - приятно знаете ли иногда попридумывать задачки :) Вас же я призываю последовать моем примеру. Проект Codeforces всегда рад как новым авторам, так и тем, кто уже выступал в этой роли. 
С предложениями пишите Артему Рахову (координатору задач проекта). Участники ждут ваших задач!

UPD:
Для удобства и некоторой подстраховки, условия задач будут доступны по ссылке.

А вам я желаю красивых решений,
MikeMirzayanov

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем доброй ночи. Пишу я эти строки ночью, поэтому такое пожелание. Хочу представить вашему вниманию несколько улучшений на Codeforces.

1. Теперь, нажав на ячейку в таблице результатов в истории посылок участника по задачам вы можете обнаружить ссылку исходный текст его решения. Таким образом, у вас есть прямая возможность посмотреть код любого пользователя по любой задаче. Конечно, протокол тестирования с тестами там тоже доступен. Там сейчас не очень удобно смотреть разные решения одного человека по одной задаче - что-нибудь попозже придумаем.

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем добрый день.

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

В тот день (20-го декабря) видимо как-то неудачно сошлись звезды (нет, в астрологию я не верю, это просто оборот такой:)) и случилось сразу несколько неприятных моментов, которые не позволили провести раунд на должном уровне. Во-первых, незадолго до раунда я разболелся и был совсем "не в форме". Это привело к тому, что я пренебрег некоторым load-тестом, который я обычно делаю перед раундом.

С началом раунда выяснилось, что некоторое время назад, экспериментируя с настройками, я значительно уменьшил память под mysql (и tomcat для инфраструктурного приложения), что, видимо, привело к срыву начала. Вместе со стартом контеста я судорожно заходил на сервер БД по ssh, но он очень значительно напрягся от нагрузки, что у меня это получилось совсем не сразу.

Вторая неприятность - проблемы с отображением условия. Дело в том, что некоторые вспомогательные данные о задаче (условия на разных языках, картинки), которые я система достает из пакета задачи она для некоторых ускорений складывает в дисковый кэш (там есть еще in-memory cache, но он находится повыше). Когда-то давно я, недолго думая, заиспользовал Google Gson (библиотеку от Google по работе с JSON из Java). Оказалось, что у используемой версии (1.2) очень плохая производительность. Об этом кое-что написано в интернетах. Короче, десериализация файлика в несколько десятков килобайт занимала около 10 секунд :(, что приводило к ряду проблем по ходу контеста. На текущий момент, этот кусок кода уже переписан :)

И, наконец, третье. Оказалось, что у нас в принципе в форме для взломов не было валидации на длину вводимого текста. Что приводило к exception при попытке вставить в базу такой взлом, а это из-за неаккуратной реализации приводило к появлению на форме ошибке о том, что решение будто бы 
уже взломано. Говорят, что у кого-то обрезались длинные взломы ... пока не ясно как такое происходило и кто их обрезал. Короче, была добавлена валидация на длину теста для взлома (и генератора). Поставил 20 килобайт, если не помещаетесь - отсылайте генератор.

На этом пожалуй все, пойду дальше готовить раунд! Если кто не в курсе - автором раунда 48 буду я.

MikeMirzayanov

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем привет!

Рад сообщить вам, совсем скоро Codeforces избавит вас от чтения бесконечных "Please, give me test #??" в комментариях. Мы решили публиковать тесты и по клику на ссылку с идентификационным номером попытке в статусе будет появляться не только исходных текст решения, но и тесты на которых производилось тестирование (отчет системы тестирования). Он не будет содержать полных тестов, если они слишком велики - пока придется потерпеть и наслаждаться их префиксами. Как только мы поймем, что багов в реализации нет - мы откроем все проведенные контесты для просмотра тестов.

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

Конечно, мы не хотим, чтобы задачи Codeforces копировались с одного online judge-а на другой. Надо понимать, что Codeforces тратит огромные усилия на подготовку задач и проведение контестов. По этой причине мы ограничиваем использование материалов таким образом, что использовать наши задачи на сайтах или других системах с автоматическим тестированием - нельзя. С другой стороны мы будем рады, если материалы задач окажутся полезны для индивидуальных занятий или будут использованы на каких-то сборах, тренировках и т.п. с очным присутствием участников. Внимательно прочтите текст лицензии, так как мы хотим, чтобы некоторые данные о Codeforces были опубликованы рядом (или внутри) с условиями задач.

Пока это версия 0.1 лицензии, может мы ее достаточно сильно перепишем, но идея, я полагаю, изменений не претерпит.

Лицензия на использование материалов задач Codeforces (v. 0.1)

  1. Вы можете публиковать тексты задач Codeforces в любых открытых источниках, но должны сохранять прямую ссылку на сайт http://codeforces.ru (для англоязычных условий - http://codeforces.com) и указывать Codeforces в качестве источника задачи. Эти данные должны располагаться в непосредственной близости от условия, быть легко заметны и читаемы. Запрещается размещать задачи Codeforces в открытых источниках с поддержкой автоматизированного тестирования (имеются ввиду online judges и близкие по идее ресурсы).
  2. Вы не можете использовать тесты и другие материалы задач (генераторы, чекеры, валидаторы) для публикации задач в открытых источниках с поддержкой автоматизированного тестирования (имеются ввиду online judges и близкие по идее ресурсы) даже с учетом изменения оригинальных условий задач.
  3. Вы можете использовать предоставленные материалы: тесты, генераторы, чекеры, валидаторы и др. для индивидуальных занятий, а так же проведения краткосрочных учебно-тренировочных мероприятий с очным присутствием участников. Условия задач должны содержать данные из пункта 1 настоящей лицензии. Вторичное (последующее) распространение задач должно содержать настоящую лицензию и подчиняться ей в полной мере.

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем добрый вечер. Хотя, конечно, не совсем он и добрый.

Как-то совсем не задался сегодняшний раунд, за что я приношу свои извинения. Во время контест мне удалось частично локализовать проблему, надеюсь мы все поправим к следующему раунду. По-видимому, было две проблемы: 1) не открывались иногда страницы (сайт приходилось перегружать), 2) при попытки взлома возникали неадекватные сообщения, что взлом уже осуществлен. Будем разбираться. Спасибо за терпение.

Учитывая все вышенаписанное, мы решили делать раунд нерейтинговым.

К следующему раунду у меня прибавляется работы, тем более, что я собираюсь быть его автором :)

М.

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Всем доброго дня!

Несмотря на то, что Артем Рахов подготовил сегодняшний контест - пост пишу я, так как он в настоящий момент готовится к финалу ACM-ICPC, решая тренировку вместе с однокомандниками.

В подготовке контеста принимали участие: Артем Рахов, Геральд Агапов (поздравляю с "покраснением") и Мария Белова.

Желаю высокого рейтинга,
MikeMirzayanov

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

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

Автор MikeMirzayanov, 13 лет назад, По-русски
Зашел в twitter, набрал в поиске Codeforces. Результат заставил задуматься - на первой странице поиска (последние 20 твиттов) исключительно иероглифические комментарии. Китай наступает!

Realtime results for codeforces

  1. L_sk_itchan_10_normalrofi 「codeforces明日!?」っと思ったけど時間見たら日曜の17時からだった。  被らなくてよかったwabout 3 hours ago via Twit for Windows
  2. Logo_normalshioshiota codeforcesの予定を、topcoder部のカレンダーに反映しておきましたーabout 12 hours ago via web
  3. ______0425_normalhi_igu codeforcesの前々回?のB問題。指示された内容分かるまで時間かかった…やっとわかったわ…about 21 hours ago via TweetDeck
  4. Default_profile_0_normalje_suis_un_bot Codeforces Round#42のEが通せた.最初TLEになってしまったので定数倍最適化をしたら何とか通った.前回のSRMのDiv2の問題を少し解く,codechefのコンテストの問題を少し解く,最大流などのライブラリ作成,といったことをしたい1 day ago via TweetDeck
  5. ______0425_normalhi_igu codeforces? 1問目やっととけた(・ω・`)1 day ago via TweetDeck
  6. Why_normalurutom 昨晩のcodeforcesの問題でも眺めましょう2 days ago via TweetDeck
  7. Misakaimouto_normalosa_k @tanitanin arenaが起動できないから無理やねー。マラソンとかCodeforcesならがんばればできるかも2 days ago via twicli
  8. 9af980f9-a779-44d3-9fa5-013b66524d0c_normaldark_yoshi_cxx TopCoderとCodeforcesではコンパイル時間に上限があるのだろうか…2 days ago via Echofon
  9. ______0425_normalhi_igu @uh_tomo http://bit.ly/cXzNfw2 days ago via TweetDeck
  10. Answer_to_life2_normalhirose_golf 次のCodeforcesはいつあるんだろう?2 days ago via web
  11. Ika15_normalRespect2D 4時過ぎてる. もう寝よう. Codeforcesに参加してたみなさんお疲れ様です. おやすみなさい2 days ago via web
  12. Twitterpic04_normalhogeover30 SRMでもCodeforcesでも @kyuridenamida さんに抜かれてしまった。あとはMarathonだけかな (チラッ2 days ago via web
  13. Icon_sakura_normaluwitenpen 折れ線の問題、Codeforcesでしか観たことないんだよな2 days ago via Tween
  14. Icocn_normaliru_ca @ir5 再提出→即撃墜は、あっても2回とか3回ぐらいまでっぽい感じですかね。撃墜の得点が、Codeforcesは若干高めな気が否めませんw2 days ago via Tween
  15. 9af980f9-a779-44d3-9fa5-013b66524d0c_normaldark_yoshi_cxx 全然システムテストが始まる気配がない…仕方がないから寝るしかない。 #codeforces2 days ago via web
  16. Ddd_bigger_normalkyuridenamida D的なタイプの問題はCodeforces独特な感じで、前もなんかこんな問題あった気がする。2 days ago via web
  17. Default_profile_0_normalje_suis_un_bot 明日のSRMのリハビリにCodeforces参加しといて良かった.実装ゲーのDにやたら手間取ったりしてひどい事になった.Eは時間もないし,D同様実装ゲーっぽい気がしたのでスルーした.明日解こう2 days ago via TweetDeck
  18. Answer_to_life2_normalhirose_golf D間違えた。 #codeforces2 days ago via web
  19. Communuty_normaltana_ash でも、これでcodeforcesのhackがどういうことかわかったのはよかった2 days ago via mikutter
  20. Icocn_normaliru_ca いろんな意味でいやらしい問題だ、ProblemDは。#codeforces2 days ago via Tween

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

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

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

Вот и приблизилось вплотную одно из самых значительных соревнований спортивного программирования в России (больше! во всем нашем регионе). Конечно, речь идет о полуфинале чемпионата мира по программированию ACM-ICPC NEERC 2010/11. Менее недели – и будут известны имена тех, кто отправится в жемчужину Египта, Шарм-Эль-Шейх. Конечно, найдутся и те, у кого этот контест останется в памяти как «Слив-2010». Желаю не попасть в их число.

Делегация Саратовского университета садится завтра в поезд, как уже знаете не с пустыми руками – около 300 футболок отправляются с нами. Сегодня мы полдня раскладывали их по коробкам, подписывали и пересчитывали. Я даже умудрился неправильно поделить 68 на 2, что чуть не привело к дефициту футболок :) Но, все трудности преодолены – подарки упакованы, а мы готовы к поездке. Напоминаю, что все официальные члены команд получат замечательную футболку Codeforces (к сожалению, запасные, тренера и руководители не в счет).

Прошлый год в Питере запомнился нам тем, что в экстренном порядке были посещены все близлежащие аптеки, тем, что в каждой команде накануне контеста у нас были люди за 38, тем, что парацетамола перед контестом не бывает много. Мы никому не желаем такого счастья – так что одевайтесь тепло, берегите себя и здоровье ваших команд!

Счастливой дороги, и до встречи в Питере.
МikeMirzayanov

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

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

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

В этом году полуфиналу ACM-ICPC нашего региона исполняется 15 лет! От всей души мы поздравляем организаторов, членов жюри, технического комитета. Отдельные поздравления директору соревнований Владимиру Глебовичу Парфенову. Большое вам спасибо за ваш труд не только по организации этого соревнования, но и по развитию олимпиадного движения по программированию во всем нашем регионе. За 15 лет проделана большая работа, и все достижения команд нашего региона на финалах ACM-ICPC это и ваша заслуга. Хочется отметить, что на NEERC всегда высокий уровень организации, а интереснейшие комплекты задач не оставляют равнодушными любых участников. Желаем вам новых успехов и новых достижений!

В этом году делегация Саратовского университета приезжает в Петербург не с пустыми руками. Мы решили сделать подарок всем участникам. Каждый участник NEERC (в Петербурге) получит фирменную футболку Codeforces. Для нас же, доставка такого количества футболок позволит выяснить кто из членов команд Саратовского ГУ является самым сильным программистом :)

Команда Codeforces и Саратовский университет.

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

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

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

Школьная командная олимпиада #3 (ЗКШ 2010/11) состоится 13 ноября, в 14:00 по Москве. Это заключительное командное соревнование из серии, будем рады видеть как постоянных участников, так и новые команды.

Раунд был подготовлен мной, Артемом Раховым, Николаем Кузнецовым и Иваном Фефером. Все мы совсем скоро отправимся на полуфинал в Петербург, а сейчас ребята совмещают подготовку к полуфиналу с составлением контестов. Special thanks за переводы задач Марии Беловой.

Напоминаю, что все желающие смогут принять участие в нем вне конкурса. Решайтесь :)

Суммарные результаты по контестам мы решили подводить по системе ИТМО, в соответствии с которой команда получает балл от 0 до 200 за каждое соревнование. Из трех контестов будут зачтены два лучших выступления, результаты которых суммируются. Не открою тайны, сообщив, что Геннадий Короткевич показал потрясающие результаты и обеспечил себе досрочную победу!

Всем удачи на предстоящем соревновании,
MikeMirzayanov и суровое, но справедливое жюри

UPD. Условия в PDF: русская версия и английская версия. Условия будут доступны, как только начнется соревнование.

UPD. Мы поздравляем всех с окончанием заключительной командной олимпиады серии и поздравляем команды:

Окончательные результаты командного зачета серии доступны по ссылке http://codeforces.com/summary/zksh-2011-teams (будут немного пересчитаны, в соответствии с обещанными правилами).

Мы желаем всем командам-участницам ВКОШП легких accepted-ов и отсутствия багов на предстоящем соревновании!

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

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

Автор MikeMirzayanov, 14 лет назад, По-русски
Всем привет!

Добро пожаловать на раунд "Codeforces Beta Round #40 (Div. 2)". Пусть за окном хмуро и пасмурно (во всяком случае в Саратове), а раунд начался с недоступности сервера (просим прощения за fail), но надеюсь решение задач принесет вам удовольствие.

Высокого вам рейтинга,
MikeMirzayanov

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

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

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

Всем добрый день.

Рады сообщить вам, что в ночь с 31-го декабря 2010 на 1-ое января 2011 будет не только салют, шампанское, поздравления и подарки, но и будут подведены итоги года на Codeforces. Сообщаем, что Томас Кормен дал свое согласие на то, чтобы ежегодная награда носила его имя! Итак, мы рады анонсировать ежегодную награду Codeforces – медаль Кормена!

В этом году решено присуждать медаль по трем номинациям:

  • лучший участник соревнований Codeforces
  • лучший участник-школьник соревнований Codeforces (подводится по серии заочных олимпиад ЗКШ)
  • лучший автор задач

Первая из медалей будет вручена участнику, имеющему максимальный рейтинг на момент окончания года. Вторая медаль будет вручена участнику серии заочных олимпиад ЗКШ 2010/11, который покажет наилучший результат по итогам серии целиком (специальным образом будут учтены как командные, так и индивидуальные олимпиады). Наконец, третья награда достанется наиболее активному и успешному автору задач Codeforces соревнований (члены команды Codeforces не учитываются при подведении результатов).

Высокого рейтинга,
MikeMirzayanov и команда Codeforces

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

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

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

Всем добрый день.

Теперь вы можете создавать команды и приглашать в них других пользователей Codeforces. Напоминаю, что первая заочная олимпиада ЗКШ будет командная, и для официального участия в ней будут допущены только команды (все участники которой зарегистрированы для участия в серии заочных олимпиад).

P.S. Заметим, что пока это только первая версия интерфейса системы вокруг команд. Мы планируем его расширить, предложения приветствуются :)

MikeMirzayanov

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

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