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

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

Это подробная и формальная версия правил соревнований Codeforces. Если вы хотите просто ознакомиться с правилами, то рекомендуем вам предварительно прочесть формат соревнований Codeforces. Организаторы могут немного модифицировать правила для конкретных раундов, тогда эта информация содержится в анонсе раунда. Приведенные ниже правила следует рассматривать как правила по-умолчанию.

Общие сведения о раунде

  1. Для участия в раунде необходимо зарегистрироваться. Регистрация на раунд открывается за 6 часов до его начала и заканчивается за 5 минут до его начала, если в информации по раунду не оговорено другое.

  2. Система проведения соревнований имеет два интерфейса: русский и английский, между которыми участники могут переключаться.

  3. Продолжительность раунда составляет 2 часа, если в информации по раунду не оговорена другая продолжительность.

  4. Участникам для решения предоставляется 5 задач, если в информации по раунду не оговорено иное количество задач.

  5. Условия задач доступны на двух языках: русском и английском.

  6. Условия всех задач становятся доступными для прочтения в момент начала раунда.

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

Вопросы по задачам

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

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

  3. Жюри соревнований может ответить на заданный вопрос в произвольной текстовой форме.

  4. Ответ "без комментариев" означает, что вопрос не соответствует пункту 2, жюри считает, что вопрос не относится к условию задачи или ответ на него содержится в условии задачи или в правилах соревнований.

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

Решение задач

  1. Решением задачи является программа, написанная на одном из следующих языков программирования (разные задачи можно решать на разных языках программирования, список языков может быть расширен):

    • С/С++
    • Delphi/Pascal
    • Java
    • С#
    • Python
    • Ruby
    • PHP
    • OCaml
    • Haskell
    • Perl
    • Scala
    • D
    • Go
  2. Требования к программам:

    • Программа должна целиком содержаться в одном файле.
    • Если в условии задачи не заданы имена входных или выходных файлов, необходимо считывать данные со стандартного потока ввода и выводить данные на стандартный поток вывода.
    • Запрещается осуществлять работу с сетью.
    • Запрещается производить операции ввода-вывода, за исключением открытия, закрытия, чтения и записи файлов и стандартных потоков, которые указаны в условии задачи для осуществления ввода-вывода.
    • Запрещается запускать другие программы и создавать процессы.
    • Запрещается изменять права доступа в файловой системе.
    • Запрещается работать с директориями, отличными от текущей.
    • Запрещается работать с реестром операционной системы.
    • Запрещается создавать и использовать элементы GUI (окна, диалоги и т.п.)
    • Запрещается работать с внешними устройствами.
    • Запрещается производить любые действия, отличные от вышеперечисленных, которые тем или иным образом могут дестабилизировать работу системы.
  3. По мере готовности решений участники отправляют программы через интерфейс системы соревнования и продолжают работу над другими задачами. После получения решения и его проверки тестирующая система незамедлительно сообщает результат проверки решения.

  4. Участник может видеть результаты проверки решений на соответствующей вкладке системы соревнования.

Компиляция решений

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

    • MinGW GNU C++ 4
    • MinGW GNU C 4
    • Microsoft Visual C++ 2010
    • Free Pascal 2
    • Delphi 7
    • C# Mono 2
    • Java 6, 7
    • Ruby 1
    • Python 2
    • PHP 5
    • Haskell GHC 6
    • Objective Caml 3
    • Scala 2
    • Perl 5
    • Go 1
    • MS C# .NET 4
  2. Организаторы соревнований не несут ответственности за проблемы, вызванные несоответствием версии компилятора в тестирующей системе и версии компилятора, который использовался участником при разработке программы. Для того, чтобы частично избежать подобных проблем, предусмотрена возможность запуска кода участника на стороне сервера. Для запуска надо отослать на сервер программу и входные данные. Через некоторое время тестирующая система сообщит результат работы программы и выходные данные.

  3. Компиляция и запуск решений производятся под ОС Windows. Переводы строк задаются парой символов #13#10. После последней строки файла или входного потока (непосредственно перед его концом) находится перевод строки.

  4. Если произошла ошибка компиляции, то участнику сообщается результат проверки <Ошибка компиляции>, а также лог компилятора.

  5. Размер файла с исходным кодом не должен превышать 64 килобайт.

  6. Тестирующая система использует компиляторы командной строки для компиляции решений. Строки компиляции для разных компиляторов приведены в таблице:

компилятор строка компиляции (запуска)
GNU C++ 4 g++.exe -static -fno-optimize-sibling-calls -fno-strict-aliasing -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -o %name%.exe %1
GNU C 4 gcc.exe -static -fno-optimize-sibling-calls -fno-strict-aliasing -DONLINE_JUDGE -fno-asm -lm -s -Wl,--stack=268435456 -O2 -o %name%.exe %1
GNU C++ 4 (C++0x) g++.exe -static -fno-optimize-sibling-calls -fno-strict-aliasing -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -std=c++0x -D__USE_MINGW_ANSI_STDIO=0 -o %name%.exe %1
MS VS C++ 2010 cl /W4 /F268435456 /EHsc /O2 /DONLINE_JUDGE %1
Free Pascal 2 fpc -n -O2 -Xs -Sgic -viwn -dONLINE_JUDGE -Cs67107839 -Mdelphi -XS %1 -o%name%.exe
Delphi 7 dcc32 -Q -$M1048576,67107839 -DONLINE_JUDGE -cc %1
C# Mono 2 dmcs -define:ONLINE_JUDGE -o+ -out:%name% %1
Java 6,7 javac -cp ".;*" %1, java.exe -Djava.security.manager -Djava.security.policy=java.policy -javaagent:invokeagent.jar -Xmx512M -Xss64M -DONLINE_JUDGE=true -Duser.language=en -Duser.region=US -Duser.variant=US -jar %s
Ruby 1 ruby.exe -c %1
Python 2 python -c "compile(open('%1').read(), '%1', 'exec')"
PHP 5 php.exe -l %1
Haskell GHC 6 ghc --make -O -o %name% %1
OCaml 3 ocamlopt nums.cmxa str.cmxa -pp camlp4o -unsafe -o %name%.exe-ocaml %1
Scala 2 См. Java
Perl perl.exe %s
D dmd -L/STACK:268435456 -version=ONLINE_JUDGE -O %s
Go go build %1

Проверка решений

  1. Во время соревнования проверка решений осуществляется на небольшом наборе тестов, которые называются претестами.

  2. Результат проверки решения на претестах сообщаются участнику сразу же после проверки.

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

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

  5. Тестирование производится путем последовательного запуска программы на каждом из тестов.

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

Вердикт системы Описание ошибки
Превышено ограничение памяти программа пытается использовать больше памяти, чем указано в условии задачи
Превышено ограничение времени программа не завершила работу за указанное в условии задачи время
Ошибка времени исполнения программа завершилась с ненулевым кодом возврата (произошло деление на 0, выход за границы массива и проч.)
Неправильный ответ неверный ответ
Решение "зависло" программа продолжительное время абсолютно не расходовала процессорное время
Отказ тестирования решение не удалось запустить, возможно, из-за ошибки тестирования наиболее вероятная причина — ошибка в программе (например, использование сверхбольших массивов)
  1. В случае, если решение прошло все претесты, участнику сообщается результат проверки "Претесты пройдены". В противном случае результат проверки, сообщаемый участнику, состоит из номера первого по порядку претеста, который не был пройден, и вердикта тестирующей системы.

  2. Если результатом проверки решения является "Ошибка компиляции", "Отказ тестирования" или решение не прошло первый претест, то это решение никак не учитывается при подсчете результатов.

  3. Решение по одной и той же задаче можно отправлять несколько раз.

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

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

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

    • каждую минуту стоимость задачи уменьшается: стоимость задачи падает на X/250 балла в минуту (где X первоначальная стоимость задачи), например, задача первоначальной стоимости 500 баллов дешевеет со скоростью 2 балла в минуту;
    • балл участника за задачу равен текущей стоимости задачи в баллах за вычетом штрафа;
    • штраф определяется как количество решений этого участника по этой задаче, сделанных ранее, умноженное на 50 баллов;
    • балл участника за задачу не может быть меньше, чем 30% от изначальной стоимости задачи.

Взломы

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

  2. Заблокировав задачу, участник получает право просматривать исходные коды подтвержденных решений по этой задаче участников, которые находятся с ним в одной комнате. После просмотра кода чужого решения, участник может предложить тест, который, по его мнению, не пройдет просмотренное решение. Эта процедура далее называется взломом решения. Тест может быть задан вручную, либо с использованием программы-генератора, которая выводит тест в стандартный поток вывода. Предложенный тест автоматически проверяется на соответствие ограничениям, указанным в условии задачи. Если ограничения не выполняются, то участнику сообщается об этом и попытка взлома игнорируется. Если же ограничения выполнены, то производится запуск взламываемого решения на предложенном тесте. В случае, если решение не проходит тест, то взлом считается успешным, иначе — неуспешным. Также взлом игнорируется, если в момент его обработки взламываемое решение не является последней подвержденной попыткой участника по задаче. Например, такое может произойти, если кто-то успел взломать это решение до данного взлома или участник успел перепослать решение.

  3. За успешный взлом участник получает 100 баллов. За неуспешный взлом участник получает штраф в 50 баллов.

  4. В случае успешного взлома для участника, чье решение взломали, происходит следующее:

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

Что можно делать, а что нельзя

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

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

  3. Разрешается пользоваться любыми источниками информации в интернете (но копировать-вставлять чужой код нельзя).

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

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

  6. Организаторы соревнований имеют право отслеживать честность поведения участников различными методиками и при выявлении нарушений — дисквалифицировать участника.

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

  8. Запрещается использовать какие-либо технические способы (включая, но не ограничиваясь, OCR, средства анализа трафика, браузерные плагины и проч.) взаимодействия со взламываемыми решениями других участников. Единственный допустимый способ анализа взламываемого решения — его зрительный анализ. Допускается ручной перенабор взламываемого решения или каких-либо его частей с целью локального запуска.

  9. Любое нарушение этих правил, правил из раздела ЧАВО, правил из анонса соревнования или подтвержденных в процессе регистраций может повлечь штрафные санкции вплоть до дисквалификации и бана. Будьте честными!

Таблица текущих результатов

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

  2. Все промежуточные результаты являются неофициальными.

Финальное тестирование и окончательные результаты

  1. После завершения соревнования публикуются результаты тестирования решений участников на основном наборе тестов.

  2. На основном наборе тестов тестируются подтвержденные решения, то есть те, которые одновременно:

    • прошли все претесты и являются последними из таковых (от участника по задаче);
    • не были взломаны.
  3. Задача считается решенной участником, если решение участника прошло все тесты из основного набора тестов.

  4. За решенную задачу участник получает балл, равный предварительному баллу его решения за эту задачу. Балл за нерешенную задачу равен 0.

  5. Результатом участника считается сумма баллов за все решенные им задачи и баллов за взломы.

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

  7. Тестирование осуществляется на компьютерах Core 2 Duo E6750, 2.66 Ghz, 3Gb памяти.

Интеллектуальная собственность

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

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

  3. Участники предоставляют решение на условиях «как есть», без предоставления каких-либо гарантий или условий либо ни прямого, ни косвенного характера, включая, без ограничений, никаких гарантий или условий на названия, никаких гарантий относительно коммерческого использования или пригодности для тех или иных целей и ненарушения прав.

Просьба сообщить в комментариях, если мы забыли какие-то аспекты. Если после анализа комментария, текст будет обновлен, а соответствующий комментарий станет неактуальным, то такие комментарии мы будем через некоторое время скрывать (чтобы не захламливать ленту комментариев неактуальными вопросами/замечаниями).

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

»
12 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится

Хочется знать ограничения на генератор.

Для педантов может быть стоит добавить, то что вы понимаете под обозначением МБ (2^20, а не 10^6 байт)

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +14 Проголосовать: не нравится

Пара вопросов: Использовать чужой код запрещено. А что насчет сгенерированного кода(начиная с equal и hashCode и заканчивая тем, что делает мой плагин)?

Далее, "Разрешается пользоваться любыми источниками информации в интернете (но использовать чужой код нельзя)" — то есть я не могу во время контеста читать код на e-maxx, но могу читать описания алгоритмов? Или чтение не считается использованием?

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    1. Конечно, генеренные equals/hashCode надо разрешать. Если плагин вставляет чужую реализацию min-cost-max-flow, то по текущим правилам это неправильно. Возможно, стоит продумать за и против, чтобы разрешать и чужой код, чтобы таких вопросов не было. Но пока именно так.

    2. Здесь использовать имеется ввиду скопировать и вставить. Сейчас поясню.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      По 1.

      а) Существует большое количество лицензий, разрешающих использовать исходный код.

      б) Это правило непроверяемо. Любой человек может опубликовать исходный код под открытой лицензией, как, например, это делает e-maxx. Я не знаю, написал ли он лично весь исходный код, опубликованный на его сайте. Получается, что если забанить участника за то, что он использовал код с e-maxx.ru, может вполне оказаться потом, что когда-то этот код сам участник и написал.

»
12 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

1) Можно ли использовать чужой код, заготовленный до начала контеста, если лицензия позволяет считать его своим. Т.е. что понимается под "свой" код (самостоятельно напечатанный и т.п.)?

2) Распространяются ли данные правила на соревнования, которые проводятся не по основному формату (например, SLR)?

3) Запрещено ли во время соревнования публиковать исходные коды решения задач? (думаю, это стоит указать явно).

»
12 лет назад, # |
Rev. 3   Проголосовать: нравится +4 Проголосовать: не нравится

Кроме того, хотелось бы, чтобы во всех "запрещается ...", например, "запрещается изменять права доступа в файловой системе" было дописано слово "явно", т.е. "запрещается явно изменять права доступа к файловой системе". Примеры:

1) Реализация виртуальной машины C# или прочего языка с виртуальной машиной может запустить дочерний процесс (например, MS-реализация может запустить FontCache).

2) Реализация CRT может писать какие-либо логи.

3) Открытие файла на запись может блокировать его на чтение.

4) Упавшая программа из-за особенностей реализации вспомогательных библиотек может создавать GUI-компоненты, работать с сетью и так далее.

5) Результатом вызова любой функции (теоретически) может быть создание процесса в системе, необходимого для работы OS.

...

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is it legal if I do following scenario?:

  • pass pretests and lock my solution

  • download another user solution

  • compile it (without reading source)

  • run some tests on my machine

  • hack solution (if for any test outputs are different)

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    You can not download another user solution.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    AFAIK, you are not allowed to screen his solution and get it's text using some programs — it's cheating. but, i think, you can print this solution by yourself and test it.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится

      It's cheating — why?

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +12 Проголосовать: не нравится

        Common sence — otherwise it would be copyable

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          If I write a GreaseMonkey script that helps me with re-typing a solution, will it be bad?

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится +11 Проголосовать: не нравится

            I think retyping of solution is not desired either — but it in any case should be mentioned in the rules

            • »
              »
              »
              »
              »
              »
              »
              12 лет назад, # ^ |
              Rev. 3   Проголосовать: нравится +8 Проголосовать: не нравится

              I think that retyping can not be forbidden because sometimes you need to check some language features like (-1 % 2 == -1).

              Or round(0.5) ==0, round(1.5) == 2 (like Delphi).

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится

        Maybe it was added later, but:

        Attempting to digitally extract other contestant's code during the hacking is considered cheating. You may not use any technical/digital tools to obtain other contestant's code, including (but not limited) OCR, traffic capture, browsers plugins and so on. The only allowed method to analyze other contestant's solution is reading it in a hacking window. However it is allowed to manually retype the solution or it's parts to run it locally.

        Point 8 in Can-do's and Can't-do's ...

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится -8 Проголосовать: не нравится

Mike, here is a feature request: put the hacking details at the bottom of a submission if it was hacked. It will be very useful and more handy, thanks.

»
12 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Я правильно понимаю что, участником считается тот, кто сделал хотябы одну попытку по любой задаче? Мне кажется это немного не справедливо и было бы лучше, если бы участником считался тот кто открыл условие хотябы одной задачи(как на TC). Планируется ли это? (может я что-то пропустил и не прочитал)

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    +1

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится -6 Проголосовать: не нравится

    Уже обсуждалось несколько раз, например, вот: http://codeforces.com/blog/entry/1336#comment-112345

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

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      Не тем, кто зарегистрировался, а тем, кто открыл задачи.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится

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

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится +16 Проголосовать: не нравится

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

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится +20 Проголосовать: не нравится

      Ну вот ты зарегистрировался и не смог поучаствовать. Застрял в пробке и тебе сняли 100500 рейтинга. Разве это круто?

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Можно просто регистрироваться не за день, а за полчаса до соревнования, когда уже все пробки преодолены и уже точно знаешь, что готов писать. А зачем иначе регистрация? Ну или же можно сделать большую кнопку "Check in", которая появляется за полчаса до начала и которую надо нажимать, чтобы подтвердить своё участие после регистрации (но да, это усложняет процесс регистрации на раунд).

        gen выше высказывает даже предложение получше этого, однако, как я понимаю, это позволит под одним аккаунтом регистрироваться, а под другим смотреть задачи и решать, участвовать или нет — что в результате даёт ту же систему, что и есть сейчас.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Предлагаю как-нибудь аргументировать мнение. Пока ни одного плюса за вариант "изменять всем зарегистрированным" не видно.

      Мне кажется, с точки зрения спортивности правильнее поступать как на TC — считать участником человека, открывшего условия. Можно перед показом условия в первый раз сделать кнопку "Да, я хочу участвовать".

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

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

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Речь идёт о том, что из трёх вариантов "участник — зарегистрировавшийся, участник — открывший условия, участник — засабмитивший задачу" второй, по моему мнению, самый обоснованный.

          В вашем варианте печально то, что для его соблюдения требуется подстраивать каждый тур. Нередко бывает, что задача А — на какую-то интересную идею, которую не всякий участник div1 с гарантией придумает — такие контесты тоже имеют право на существование.

          • »
            »
            »
            »
            »
            »
            11 лет назад, # ^ |
              Проголосовать: нравится +3 Проголосовать: не нравится

            Видимо, самый логичный вариант заменить регистрацию на "Check in", который открывается за 15 минут до начала и закрывается за 5 минут до начала контеста (примерно, константы надо обдумать). Все кто прошел — те участники. Единственный минус — сейчас можно опоздать (почти опоздать) на раунд, а в таком варианте — в пролёте.

            • »
              »
              »
              »
              »
              »
              »
              11 лет назад, # ^ |
                Проголосовать: нравится +5 Проголосовать: не нравится

              Можно оставить регистрацию для деления на комнаты, а Check in разрешить делать по ходу контеста.

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится -15 Проголосовать: не нравится

          Можно объединить див1 и див2, оставив 7(или 6) задач, возможно, увеличив продолжительность.
          Кроме того что будет лёгкая первая задача — исчезнет искусственная граница, делящая людей на дивизионы.
          Наверняка, у такой идеи есть какие-нибудь минусы, но я их не вижу.

          • »
            »
            »
            »
            »
            »
            11 лет назад, # ^ |
              Проголосовать: нравится +18 Проголосовать: не нравится

            Вряд ли участникам DivI больно хочется решать задачи уровня А и В DivII.

            • »
              »
              »
              »
              »
              »
              »
              11 лет назад, # ^ |
                Проголосовать: нравится +3 Проголосовать: не нравится

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

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Аргументация такая. Текущая система рейтинга имеет известные недостатки. Получается, текущую систему следует как-то поменять. Основных вариантов два: либо в пересчёте рейтинга участвуют все зарегистрированные, либо только те, кто был онлайн/открыл задачи.

        В первом варианте систему не проведёшь — зарегистрировался, поменялся рейтинг; не зарегистрировался, участвовать не можешь. У зарегистрировавшихся появляется стимул решать раунд до конца и показать свой настоящий уровень. Недовольны попавшие в пробки. Но и эту проблему в принципе можно решить, введя двухшаговую регистрацию: сначала регистрируешься как обычно, а не более чем за полчаса до раунда подтверждаешь своё участие. Тем же, кто опоздал на раунд, но всё равно хочет его порешать, можно дать возможность участвовать вне конкурса.

        Второй вариант в теории лучше первого. Но тогда надо закрывать задачи от общего доступа, как сказал MikeMirzayanov. Однако и это не защищает полностью: кто-то будет просто создавать фейковый аккаунт и смотреть задачи через него. Как решить эту проблему? Аккаунт надо привязать к чему-то, что у одного человека есть в единичном или небольшом количестве. Адрес электронной почты не подходит, IP, пожалуй, покатит, но есть динамические IP/прокси… Зато, например, номер мобильного телефона подходит. Это избавит Codeforces от фейков (кстати, было бы круто!), но введение такой меры создаст больше проблем, чем решит. Ввиду этого такая реализация второго варианта, которая с достаточно большой уверенностью исключает читеров, вряд ли будет практична.

        Поэтому я прихожу к выводу, что всё-таки самый хороший вариант — это изменение рейтинга у всех зарегистрированных на раунд.

        Можно перед показом условия в первый раз сделать кнопку "Да, я хочу участвовать".

        Если эту кнопку показывать непосредственно перед раундом, чтобы ни у кого не возникало соблазна нажать её сначала под фейковым аккаунтом, то как раз и получается регистрация в два шага с обязательным последующим пересчётом рейтинга.

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Идея: почему бы не задействовать вклад и позволять смотреть задачи только тем незарегистрированным участникам, у которых вклад не меньше стольки-то?

»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

ruby 1 ? это что? 1.8? 1.9? 1.9.2? 1.9.3?

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Вот я поучаствовала в соревновании, был рейтинг 1296, решила задачу А на 396(решение полное, с первого раза, не взломанное), но у меня почему то сняли 90 баллов рейтинга — за что?

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится

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

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

what is unofficial standing? is it combined ranklist of Div1 & Div2 contest ? if I click on unofficial I see my rank is changed and it's gone far away from normal rank :(

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Yes, unofficial shows all equal scores in contest like they are inequal and adds users that solving this contest on 'virtual participation'

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Why does GNU C have "-fno-asm" flag, but GNU C++ doesn't?

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I've read all notifications and rules above, ok, i'll take part in the contests. come on everyone.

»
7 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

Это нормально, что ссылка на правила пропала с главной?

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hello. I usually write the code and compile it on Linux (using gcc). Is there any way of checking that if I try to compile the file with the Windows GCC compiler, it won't fail? Thanks!

»
7 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Для С++ в строке компиляции (запуска) размер стека задаётся 256 МБ (--stack=268435456). Для прожорливой JAVA размер стека всего лишь 64 МБ (-Xss64M). Предлагаю уравнять два языка и для JAVA установить размер стека 256 МБ, так как простой DFS для графа (вытянутого в линию) из 500000 вершин может получить StackOverFlow.

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится +13 Проголосовать: не нравится

In response to AIM Round 4 problem B, I'd like to ask whether the following construct would be viewed as a forbidden obfuscation.

std::mt19937 RNG{(long long)(std::hash<std::string>()({"randomStringLiteralOfLength>1000charactersThanNooneWillRetypeDuringContest"}))};

Of course, I would change the random string after I use it, so that no-one can calculate my seed in advance.

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    That's one creative idea :D

    I don't think it's forbidden. "That is, it is forbidden to use any special techniques aimed at making the code difficult to read and understand the principle of its work." Your code will be easy to read, and they can understand it, so it's not obfuscating.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +18 Проголосовать: не нравится

    Another interesting question is what if this string contains tab and spaces instead

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Has this ever been clarified? Has anybody used such a technique these past few years?

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Нельзя ли узнать по какому принципу начисляется рейтинг и почему это происходит довольно продолжительное время?

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can I submit My code after the contest is over?

I want to check my code when I finally work it out.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    You can use virtual participation to take part in past contest, as close as possible to participation on time. Or you can simply submit your codes in the problemset.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

How can I hold a round in Codeforces?

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

If my first code is accepted but the second one is not, will the system run the first or the second code?

  • »
    »
    14 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    The last code which is Accepted will be run. So, the first code will be run.

»
4 года назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

each minute decreases the problem's value: the value decreases by X/250 points per minute (where X is a problem's initial value)

In this 150-minute contest the penalty per minute is only 120/150 * (total score)/250, not (total score)/250.

Is that still the case? If so, please edit the rule accordingly.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

If a user is registered for a rated contest, but unable to make it (i.e. never looked at the problems), does that impact rating?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What does Penalty mean in the contest?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

if i dont make any submissio in codeforces contest will that be evaluated??

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Will the unsuccessful hacks be in the system tests?

»
4 года назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится

Does CF deducts points for the first test case if it's wrong?

»
4 года назад, # |
Rev. 2   Проголосовать: нравится +9 Проголосовать: не нравится

For the Idleness Limit Exceeded, what does one mean by The program didn't use the CPU time for considerable time? Also, when do programs tend to give Idleness Limit Exceeded, and how can it be avoided?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Commenting, so that anyone might answer this

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I can give one such situation where you will get Idleness Limit Exceeded. It happened to me some contests back.

    Suppose the query is like this- We will output some indices of the array and we will get the index i among these such that Arr[i] is maximum among all the indices for which we queried for.

    Now suppose we queried like this-
    3 1 2
    Here first integer 3 denotes that we will output 3 indices for which we want to query. But as you can see after this only two indices have been printed which are 1,2. In this case, you will get an Idleness Limit Exceeded.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can I see pretests after the contest. I just want to know what was going wrong.

»
3 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Is there any negative markings? Can anyone score less than 0 points?

  • »
    »
    3 года назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    You don't get penalty points for problems you don't end up solving. Also, see: "a contestant can't earn less points than 30% of the initial problem value."

    You can earn negative score, but pretty much only on purpose — by solving a problem, locking it, and making many bad hacks on other's solutions.

»
22 месяца назад, # |
  Проголосовать: нравится -18 Проголосовать: не нравится

can we view the question(doubt) that we have asked during the time of contest??

»
17 месяцев назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

my solution has passed all pretests, does it mean it is accepted or not ?? Someone please help , I am in a running contest now.

»
15 месяцев назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

No one replied!

»
9 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What does "but it is forbidden to copy-paste somebody else's code" means?

»
5 месяцев назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

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

Вопрос: Означает ли это что на раундах нельзя использовать mutex и thread(имеется виду параллельность в С++)? Если можно, то какие есть ограничения?