Автор allllekssssa, история, 9 лет назад, По-английски

Hello Codeforces community !

I am glad to announce Codeforces Round 307 (Div. 2) on 12th of June at 19:30 MSK. Authors of this contest are Nikola Mandic (nikola12345) and Aleksa Plavsic (allllekssssa). This is our first round and we really tried to make interesting and solvable problems. Traditionally Div.1 participants can take part out of the competition ( personally I believe that the problems are worth to Div 1 participants, and nobody can solve everything in 20 minutes ). This is the first Serbian round and we want to invite our friends from Serbia to take part in this round and maybe prepare some of next rounds.

The main character of this round is gonna be GukiZ ( our proffesor of computer science ). He really helps us to become better people and developers !

We want to thank Zlobober for help in preparing contest and great advices, Delinur for translating problems statements into Russian and MikeMirzayanov for fantastic Codeforces and Polygon platform !

We wish you great fun, a lot of Successful hacks, Accepted solutions and high rating !

UPD: Scoring distribution: 500 — 1250 — 1750 — 2000 — 2500.

UPD2: Due to technical reasons round was delayed by 10 minutes. Stay tuned!

UPD3: +5 minutes. Thanks for your patience!

UPD4: System testing is complete, but the rating update won't be that fast since we are working on improving our cheater catching system. Thanks for your understanding!

Congratulations to winners!

DIV 1:
1.MrDindows

2.kennethsnow

3.ecnerwala

4.I_love_Tanya_Romanova

5.Hasan0540

DIV 2:
1.hrzhrz_hrzhrz

2.slo

3.wangjing

4.cyber_tourist

5.Moose_Lee

Thanks to all participants. We hope you have a good time and learn something new.

UPD5: Link of editorial !

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

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

Автор I_love_Hoang_Yen, история, 9 лет назад, перевод, По-русски

Если вы написали несколько задач и подготовили для них тесты, вероятно, вы будете крайне неприятно себя чувствовать, если какие-то из тестов окажутся некорректными (в том смысле, что они не будут согласованы с условием задачи): значение какой-то величины будет больше допустимой верхней границы для нее, граф не будет удовлетворять требованиям связности или же не будет являться деревом... Это естественно, что вы будете себя так чувствовать. Даже опытные авторы задач не застрахованы от ошибок (это случается даже на самых престижных соревнованиях: пример тому — финал чемпионата мира ACM ICPC 2007 г.)

Настоятельно рекомендуется писать специальную программу (называемую валидатором), чтобы формально проверить каждый тест на соответствие всем требованиям условия задачи. Валидаторы обязательны для задач, которые готовятся для Codeforces. Polygon имеет встроенную поддержку валидаторов.

Написать валидатор с помощью testlib.h на самом деле очень легко.

Пример

Ниже приводится валидатор, который мог бы быть написан для задачи 100541A - Stock Market:

#include "testlib.h"

int main(int argc, char* argv[]) {
    registerValidation(argc, argv);
    int testCount = inf.readInt(1, 10, "testCount");
    inf.readEoln();
    
    for (int i = 0; i < testCount; i++) {
        setTestCase(i + 1);
        int n = inf.readInt(1, 100, "n");
        inf.readSpace();
        inf.readInt(1, 1'000'000, "w");
        inf.readEoln();

        inf.readInts(n, 1, 1000, "p");
        inf.readEoln();
    }

    inf.readEof();
}
Оригинальный валидатор, использующий более старые версии testlib.h

Самое замечательное в этом валидаторе то, что он очень простой, и в нем очень трудно написать что-то неправильно.

В репозитории Github можно найти другие примеры валидаторов.

Функции и методы

Первая строка вашего кода должна содержать вызов registerValidation(argc, argv): немного магии, и вы можете использовать необходимые методы.

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

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

Автор Monyura, история, 9 лет назад, По-русски

Codeforces, привет!

Я рад анонсировать Looksery Cup 2015, над подготовкой которого работала целая команда наших сотрудников, каждый из которых внес огромный вклад: Sfairat, olpetOdessaONU, Sklyack, MrDindows, Rubanenko, Krasnokutskiy, 2222, Maxim, Avalanche, Igor_Kudryashov, Kepnu4 и я. Отдельное спасибо координатору Zlobober за помощь с задачами и советы, а также Delinur за перевод условий.

Мы подготовили для вас 8 задач различной сложности, которые будут расположены в случайном порядке. Раунд будет длиться 2 часа 30 минут и пройдет по правилам Codeforces с плавной динамической стоимостью. Очень надеемся, что задачи понравятся и вы получите удовольствие от соревнования, а мы получим мало кларов :)



Топ-200 участников соревнования получат именные футболки с их хендлами на Codeforces:

Как сообщалось в предварительном анонсе, победитель соревнования получит возможность поехать в полностью оплаченное путешествие в Сан-Франциско.

Кроме этого, топ-15 участников получат Oculus Development Kit 2.

А участники с 16 по 50 места — гаджет Ollie.

Также хочется выразить большую благодарность MikeMirzayanov и всем, кто трудится над Codeforces и Polygon — ваш вклад в образование и развитие IT сферы трудно переоценить, я думаю все со мной согласятся.

UPD. Раунд будет рейтинговым для обоих дивизионов.

Ждем вас завтра,

Looksery Inc.

UPD3. Появился разбор

UPD2. Рейтинг будет пересчитан сегодня, но завтра могут произойти небольшие изменения, не пугайтесь

UPD. Раунд завершился, всем спасибо, что приняли участие. Поздравляем победителей! Окончательные результаты будут объявлены в течении суток, после определения читеров. По предварительным результатам top-15:

  1. tourist
  2. scott_wu
  3. Petr
  4. Haghani
  5. jqdai0815
  6. PavelKunyavskiy
  7. W4yneb0t
  8. vepifanov
  9. LHiC
  10. Gullesnuffs
  11. simonlindholm
  12. subscriber
  13. Shik
  14. izban
  15. data_h

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

Анонс Looksery Cup 2015
  • Проголосовать: нравится
  • +1426
  • Проголосовать: не нравится

Автор kuviman, история, 9 лет назад, По-русски

Привет!

Работа на Codeforces никогда не стоит на месте, и вот пришло время рассказать вам о последних изменениях, ранее не упоминавшихся.

Testlib

  • testlib переехал на GitHub, выпущена новая версия 0.9.9 с поддержкой C++11. Добавлены генераторы двудольных графов, корневых и простых деревьев.

Polygon

  • Добавлена базовая поддержка групп тестов. Теперь вы можете для каждого теста указать его группу, запускать invocations по группам, добавлены строки с summary по группам на странице просмотра invocation'а. Если для теста указана группа, она появится в дескрипторе задачи (например <test cmd="gen 1 2" group="testGroup" method="generated"/>). Эта функциональность может оказаться полезной при подготовке задач для школьных олимпиад.
  • Добавлена возможность просмотра условий и валидатора задачи/контеста на одной странице. Это значительно упрощает нахождение ошибок в переводах и валидаторе (раньше для этого нужно было открывать их в разных вкладках и постоянно переключаться между ними, что не очень удобно). На странице просмотра условий добавлена ссылка "Review":

    На странице контеста соответствующая ссылка находится на боковой панели:

Codeforces

  • Теперь пропустить важное сообщение во время раунда стало еще сложнее — сообщения дополнительно показываются с использованием Notification API.
  • Исправлен баг в API: в методе contest.hacks были перепутаны defender и hacker.
  • Исправлен баг со сбрасыванием фильтра статуса. Такое иногда возникало когда запрос уходил на другой сервер Codeforces.
  • Исправлен баг с переполнением local storage. Если у вас вдруг переполнялся local storage, нужно было выполнить localStorage.clear(); в консоли браузера. Теперь Codeforces использует local storage аккуратнее.
  • При взломе задачи теперь подсвечивается синтаксис:
  • При просмотре посылки теперь показываются невидимые символы, так как раньше иногда было непонятно почему приходит WA:
Было Стало
  • Вам больше не требуется загружать изображения на сторонние сайты, теперь вы можете сделать это сразу при редактировании поста. Сразу под содержимым поста вы можете выбрать несколько изображений, для каждого из них сгенерируется ссылка, которую нужно будет использовать для вставки в текст:
  • Улучшена возможность категоризации постов, в частности важные материалы (документация, правила и проч.) Codeforces скоро не нужно будет искать в блогах, они будут структурировано доступны на специальной странице.
  • Добавлена возможность дать права на редактирование поста списку пользователей, пока такая возможность будет доступна списку авторитетных пользователей, которые смогут самостоятельно вносить правки в посты с документацией, туториалами и подобными материалами.
  • Улучшена проверка генераторов на устойчивость: напоминаем, что генераторы при взломах нужно писать таким образом, чтобы при каждом запуске они выдавали один и тот же input, теперь это проверяется более надежно. Не инициализируйте генераторы случайных чисел в генераторах текущим временем!
  • Добавлена возможность просмотра истории правок у поста. Историю можно сделать доступной либо для всех пользователей, либо только для редакторов. По умолчанию для новых постов она будет доступна всем. Если вы разрешаете просмотр истории, то при изменении текста вы сможете опубликовать автокомментарий со ссылками на старую версию, новую версию, а также на просмотр изменений.
  • Теперь те участники, кто не участвовал в рейтинговых раундах более 6 месяцев удаляются из рейтинга. На них всё еще можно посмотреть по ссылке РЕЙТИНГ (ВСЕ). При подсчете рейтингов стран/городов/организаций они тоже теперь не учитываются.

И это еще не все! В скором времени ожидайте еще больше улучшений, к примеру ведется работа по данному вопросу и не только.

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

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

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

Привет, Codeforces!

Мы рады сообщить, что 4 июня в 19:30 MSK состоится раунд Codeforces #306, авторами которого являюсь я (Адилет Жаксыбай), и Тимур Сытдыков (Timur_Sitdikov). Раунд будет рейтинговым для участников второго дивизиона, участники первого дивизиона могут, как обычно, поучаствовать в нем вне конкурса.

Хочется выразить благодарность всем тем, кто помог нам с подготовкой раунда: Максиму Ахмедову (Zlobober), который помог нам с подготовкой задач, Бекжану Касенову (BekzhanKassenov) и Сергею Лазареву (SergeyLazarev), протестировавшим контест, и Марии Беловой (Delinur), которая перевела условия на английский язык. Отдельное спасибо Михаилу Мирзаянову (MikeMirzayanov) за создание платформ Codeforces и Polygon.

Кстати, насколько нам известно, Timur_Sitdikov — первый участник с Узбекистана, принявший участие в подготовке Codeforces раунда. Мы надеемся, что все пройдет хорошо :)

Всем удачи!

UPD Разбалловка будет динамической.

UPD2 Разбор можно найти здесь.

UPD3 Поздравляем победителей:

  1. mff

  2. I_Love_Nodir.Daminov

  3. tun

  4. I_love_Ngoc_cmn_Thuy

  5. goodhope

Раунд закончен, спасибо всем, кто принял участие!

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

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

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

Пару месяцев назад мы провели очередную межвузовскую командную олимпиаду. Тренировка по задачам этого контеста состоится в воскресенье, 7 июня, в 13.00 по Московскому времени.

Авторами задач данного соревнования являлись Sinner, dalex, Slamur, также неоценимую помощь в подготовке оказали craus, Shlakoblock и I_love_natalia.

Зайти в контест вы сможете на этой странице: Тренировки Codeforces

Список предыдущих наших контестов:

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

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

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

Rules

The draft for this year's rules is available on the competition website.

As it is highlighted, there are two important changes. First of all, it is officially confirmed that Java is among the languages that can be used at IOI 2015. Secondly, since the JVM uses threads "under the hood", threads are now allowed for submissions in any programming language, but the runtime of a solution is counted as the sum of the runtime of all threads.

I don't think that these changes are really significant to any participants not using Java, because there is no point in using threads if the runtime for each thread is counted separately.

The rules promise "generous time limits", which is interesting, because experience shows that Java solutions tend to be slower even when simple wall time is considered, but counting all the JVM threads separately could result in an even more significant slowdown (compared to other languages).

I'm a little bit concerned that this might mean that we're going to see 20s time limits again (and, consequently, long testing queues, just like during IOI 2013). This happened at the Baltic Olympiad in Informatics this year, where the jury had "optimal" Java solutions working for ~10-15s on maxtests, while C/Pascal solutions spent less than 0.5s, and the TLs were nevertheless set at around 20s (which did make feedback unavailable for a short period of time during the contest, but the jury dealt with it quickly).

Another change in rules which surprised me a bit is that the graders are not guaranteed to use the same hardware as contestants' machines. But then again, with full feedback on 100 submissions per task, perhaps this is not a very serious issue.

Syllabus

The IOI syllabus is a document describing topics (most importantly, algorithms) which IOI participants are expected to know, as well as those that must not be necessary to solve an IOI task.

The new version of the IOI syllabus is already available, and a list of changes should be available soon on misof's IOI Syllabus page.

Meanwhile, most of the changes in the syllabus appear to consist of moving stuff from "Explicitly excluded" to other parts of it, most often "Excluded, but open to discussion". I understand this new category as "these are still excluded, but we should consider including them in IOI 2016 or later", although one should be cautious with this, since the syllabus is not binding for the task authors anyway, so, if someone comes up with a really cool task concerning an excluded topic, it could theoretically be allowed, especially if the topic is "open for discussion".

Another interesting change is that planar graphs were moved from "explicitly excluded" to "included, not for task description", although planarity testing is still excluded. Bipartite matching was also moved from "explicitly excluded" to "included, not for task description", and maxflows and strongly connected components are now "excluded, open for discussion". Balanced binary search trees are now included, and string hashing is "excluded, but considering inclusion".

I hope that this overview of the changes will be useful to other IOI participants (or teachers, or spectators), and I'm looking forward to hearing more information from the organizers.

The changes in the syllabus seem to reflect the fact that with every year, more and more algorithms are becoming "widely known", and the olympiad organizers are trying to reflect this, which means that the olympiad is getting harder over time. Perhaps the organizers have decided that now is the right time to formalise this by including more advanced algorithms in the syllabus (as hinted by the results of the participant surveys in 2013 and 2014). However, at this particular moment, most of the changes seem to be in the "excluded, but open for the discussion" category, and it is certain that many discussions will be held on this topic, both at IOI and outside. Perhaps a part of this discussion might happen right here, on Codeforces.

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

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

Автор nicolas.chabanovsky, 9 лет назад, По-русски

Привет! Меня зовут Николай, я евангелист Stack Overflow на русском.

С радостью спешу сообщить, что совсем недавно был запущен Stack Overflow на русском по адресу http://ru.stackoverflow.com/. Stack Overflow на русском — это инициатива команды Stack Exchange, автора англоязычного Stack Overflow.

Сегодня на сайте обсуждается в среднем восемьдесят вопросов в день, а само сообщество входит в десятку крупнейших во всей Сети по количеству вопросов. Было бы здорово видеть еще больше интересных тем, особенно касающихся нетривиальных олимпиадных задач. Решая такие вопросы на Stack Overflow на русском, мы не просто делимся знаниями с коллегами, но и стимулируем интерес всего экспертного сообщества к спортивному программированию в целом.

Имея перед собой прекрасный пример русскоязычного раздела на Codeforces, можно с уверенностью утверждать, что Stack Overflow на русском может стать весьма востребованным ресурсом среди знатоков программирования (более подробное обоснование).

Буду рад услышать ваши отзывы и предложения!

С уважением,
Николай

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

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

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

Добрый день.

Конечно, пакетные менеджеры в Linux делают проще жизнь и пользователям и администраторам. В мире Windows с этим значительно хуже, хотя некоторые наработки имеются (в Windows 10 обещают прогресс): nuget, chocolatey, wpkg и другие.

Занимаясь поддержкой тестирующих машин для Codeforces, компьютеров Центра олимпиадной подготовки программистов СГУ, подготовкой рабочих станций участников под разные олимпиады я окончательно утомился писать разнообразные bat-файлы и решил упорядочить этот процесс. Хорошим подспорьем оказался Сhocolatey, но в деталях оказалось, что он не всегда мне подходит: в большинстве случаев нельзя указать директорию установки, нет поддержки своих репозиториев, нет многих нужных для Codeforces пакетов, репозиторий Сhocolatey хранит не установщики программ, а только ссылки на них — несколько раз было, что сайт программы лежал, и установить пакет было не возможно.

По этой причине в декабре 2014 я выделил несколько вечеров поработать над удобным для наших целей менеджером (назвал PBOX, читается как пи-бокс). Я предполагаю использовать PBOX для установки специфичного для меня софта (конкретных версий компиляторов), а для программ общего назначения подойдет и Сhocolatey.

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

Я немного уже использовал его для личных целей, мне кажется, PBOX может быть полезен и кому-то из пользователей Codeforces. На сайте http://pbox.me есть примеры использования. Ниже немного пояснений.

Установка

Зайдите на http://pbox.me и в административной консоли Windows (найдите в cmd.exe и в контекстном меню по правой кнопке мыши выберите Run as administrator) выполните код с главной страницы. PBOX написан на Java, если у вас она не стоит, то он сам выкачает JRE и положит рядом с собой. Кстати, при каждом запуске PBOX будет самообновляться, так что думать о накатывании обновлений на него не придется.

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

Использование

Хотите себе именно тот g++, что используется на Codeforces? Просто наберите pbox install mingw-tdm-gcc. По-умолчанию установит в %HOMEDRIVE%\Programs\mingw-tdm-gcc, пропишет в PATH несколько директорий (включая MSYS), добавит MINGW_HOME на директорию установки. Вообще, чтобы увидеть что конкретно произойдет достаточно просто на сайте найти пакет и кликнуть Show pbox.xml.

Пакетов в PBOX пока совсем не много (но и не мало, 73). Заходите на http://pbox.me/packages и смотрите. Из полезного консольного рекомендую pbox install tools — это сборка полезных утилит sysinternals, windows resource kit, support tools, а также разных curl, wget, imdisk и других, которые сразу добавятся в PATH. Кстати, будет добавлена и полезная утилита runexe.exe, которой можно запускать процессы и смотреть используемое время/память.

Кстати, большинство утилит и компиляторов по-умолчанию будут установлены в C:\Programs (на самом деле в %HOMEDRIVE%\Programs). Довольно удобно иметь путь к ним покороче и без пробелов как у "Program Files".

Можно устанавливать с доп. ключами, например так: pbox install far --homedir=C:\Far --arch=32 --version=3.0.4040. Чтобы удалить пакет, достаточно выполнить pbox uninstall far.

Вот еще примеры доступных команд и их использования:

Описание Команда
Заставить PBOX забыть о том, что он поставил пакет (пакет остается установленным). pbox forget <package>
Вывести информацию о пакете (можно заданной версии) pbox info <package> или pbox info <package> --version=version
Найти в репозитории пакет (по тегу, подстроке в описании или названии) pbox find <query> или pbox search <query>
Найти в репозитории пакет (поиск во всех версиях, а не только последних) pbox find <query> --all или pbox search <query> --all
Вывести список пакетов (последних версий или всех) pbox list или pbox list --all
Вывести список установленных PBOX-пакетов pbox list-installed

Выкачать пакет и посмотреть что внутри

Да, это просто. Вот пример ссылки: http://repo.pbox.me/1.0/jdk8/1.8.0_45/jdk8$1.8.0_45.pbox.7z

Код

Код есть здесь: https://github.com/MikeMirzayanov/pbox

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

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

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

Общая информация

Саратовский государственный университет в первой половине августа проводит международную летнюю студенческую школу по программированию. Продолжительность школы — десять дней, школа пройдет с 3-го по 13-е августа 2015 года.

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

Школа пройдет в живописном месте, на одной из саратовских баз отдыха на берегу Волги. Участники будут расселены в уютных номерах по 2-4 человека и обеспечены трехразовым питанием. На территории базы имеется собственный пляж и спортивные площадки.

В программе школы запланировано 10 рабочих дней, включающих ежедневные пятичасовые тренировки, разборы задач, дорешивания. Будет прочитана серия лекций. Учебная программа рассчитана на студентов младших и средних курсов, которые хотят достичь значительных успехов на соревнованиях по программированию.

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

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