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

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

Всем привет!

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

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

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

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

MikeMirzayanov.

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

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

13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
20:00 это окончательное время? :) А то я видел аж 3 времени :)
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
В каком формате пройдет? КФ?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +7 Проголосовать: не нравится

    Новая система.

    Каждый найденный тобою баг даст +1 к улучшению CF =) (шутка)

13 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
Определенно хочу стать свидетелем этого ... чего бы там не было.
Даешь кучу народа для тестирования!
Поможем CF стать ещё лучше!
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Если не секрет, а в чём смысл этих изменений? Удобство для дальнейшей разработки, или повышена скорость работы сайта/чекера, или ещё что-то?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится
    Основное - я избавился от некоторого overengineering вокруг инфраструктуры контестов. Это должно привести к увеличению производительности системы.
13 лет назад, # |
  Проголосовать: нравится +24 Проголосовать: не нравится
so many thanks by the improvements. .the site is growing up!
and I would like to do some comments:
some time ago, when I entered in a ended contest and check MY SUBMISSIONS there were two columns: my submissions and my contest submissions but now there appear my submissions twice..
and I would like to see  the search bar againg, because sometimes I see a nice post but when I try to find it again I can't .
13 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
О, отлично, что будет такой раунд!! =)) это как раз возможность для меня впервые написать раунд из ubuntu под emacs посмотрим чтоже из этого получится =))
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ну вроде хорошо получилось. :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      ну вроде неплохо, хотя конечно к emacs пока еще привыкать и привыкать... очень уж там всё своеобразное =)
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Когда пришло сообщение о том, "что такое прямоугольный треугольник" (которое, кстати, на русском сбивает с толку, так как кэпство) - у меня самопроизвольно стал активным таб с задачей C, а был активным предыдущий таб, с задачей B. Браузер - Firefox 4.0 Beta 8.
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
Как я рад, что раунд не рейтинговый. В двух из трех задачах поставил слишком маленькие массивы. Эх, давно не кодил.
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
А вот и баг: человек, который был в моей комнате(dlevshunov) ломал решения людей не из моей комнаты, причем по-моему не из одной другой, а нескольких 
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А у меня не получается челленджить в других комнатах.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      и не должно получаться.. тут либо криво разделили на комнаты как-то, либо может быть он ручками как то меняя руками ид'ы посылки открывает но тогда значит это не проверяется..
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      дабл пост
  • 13 лет назад, # ^ |
      Проголосовать: нравится +24 Проголосовать: не нравится
    Дико извиняюсь.. Я глядел в общий монитор и взламывал, забыв, что я администратор и мне это можно, а на самом деле нельзя.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну если так, то хорошо)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Аккурат мое последнее место первой страницы правда выдрать удалось:D
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
        не, Леха, не удалось :)
        UPD: прошу прощения за медленную соображаловку))
        • 13 лет назад, # ^ |
            Проголосовать: нравится +2 Проголосовать: не нравится
          Я там случайно какой-нибудь спор (попадание на первую страницу) на ящик пива, скажем, не решил не честным образом? :)
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится
    Да, dlevshunov и у нас тырил взломы ломал чужие решения. :)
    Но думаю это не баг, хотя как знать.

    UPD: точно не баг. :)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
При тестировании Custom Test на Питоне - сообщение:
Ошибка исполнения, код возврата 1
" " надо заменить на какое-нибудь более настоящее тире.
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
До сих пор в мониторе, если меня нет на текущей странице (и меня подписывают 21-м внизу страницы), количество моих челленджей ошибочно показывается как 0.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Посмотрим, так по-моему эта строка вообще в формате ICPC монитора показывается. Так?
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Да, там плюсы/минусы вместо баллов, которые отображают, хоть и в другом формате, правду. А этот ноль - не всегда правда.
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
I've submited only one solution to task b which passed pretests and I have gray -1 at this column before it is judged on systests.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Later I noticed, that my solution wasn't in queue, but had status pretests passed.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Во время контеста у меня в друзьях были какие-то неизвестные мне личности, хотя это наверно связано с давним багом про отображение чужой страницы профиля вместо своей.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    +1, и во время проверки то же самое происходит сейчас
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
id 236768
Выдает ошибку компиляции. И следующее сообщение:
Can't compile program.cpp:
Compiled file is too large [33697792 bytes], but maximal allowed size is 33554432 bytes
Как бинарник скомпиленный может превышать 32МБ. Я не вижу ничего особенного в моем коде, что могло бы вызвать такую ошибку.
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Кстати, уже 4-е число, а о медали Кормана все не слышно ничего.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как все челленжили B?
Не могу понять, где там можно набажить. :)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я один TL поймал.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ну некоторые писали решение за n^4, я челленджил только таких (видел за n^3, но их трогать не рискнул).
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Видимо зря. Мое решение за квадрат работало 390 мс, при том я бы не сказал что у меня быдлокод. Решение за куб(кстати как???) упало бы
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ну например ищем все звёзды (n*m), а дальше для каждой звезды считаем кол-во звёзд на горизонтали+вертикали (n+m), получаем n*m*(n+m) = O(n3)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Учитывая, что на современных процессорах Флойд на 1000 вершинах укладывается в 2 секунды, риск не очень оправдан. Тормоза на массивах такого размера могут быть вызваны промахами кеша; думаю, аккуратно написанный куб может и влезть в ТЛ.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        З.Ы.: Мой квадрат, как и у многих, работает за 30мс. Что же у тебя там такое было?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Сам видел как вполне в 1 сек укладывается НОД не с модулем а с вычитанием на тесте 1 1000000000
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      не зря) у меня куб прошел.
      еще у меня как-то на токпкодере заходило x6 при x < 50. причем за 0.050!
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        1. На топкодере сервера помощнее (как мне кажется)
        2. x6 бывает разный. Ведь если мы во внутреннем цикле будем в 2 раза медленнее все делать, то программа замедлится в 64 раза. А это уже ~3 секунды...
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    решение за куб какое-то было и вообще левые алгоритмы типа кол-во сверху/снизу + кол-ва справа/слева - 3
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    а вообще посмотрите раздел взломы)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    printf("1000 1000\n");
    for(int i=0; i<1000; i++){
         for(int j=0; j<1000; j++){
              printf("*");
         }
         printf("\n");
    }
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я видел решение, в котором вместо умножения написан максимум. К сожалению, CF глюкнул, а когда восстановился, у меня уже не было возможности проверить :(
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Что значит глюкнул?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Глюкнул - это 503 в течение двух минут. Примерно в районе 0:55-0:57
        • 13 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          У меня, по-моему, даже 503 не было, просто не отвечал..
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Да, было, минуты на три-четыре.. Не отвечал. Подробностей не успел выяснить, только полез - заработало, думал ты видел и поправил.
13 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
Кстати, если попытаться просмотреть взломанное решение (даблклик + даблклин на id посылки), то просто перебрасывает наверх страницы. Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Как можно заметить, RPC call for action failed
http://codeforces.com/blog/entry/661

В комментариях тоже)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
64битовый тип не все брали:)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    весьма странно, учитывая комментарии в задачах)
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Я так понимаю, что вам интересно, какие баги во время контеста были замечены?
Когда я обновляла страничку с друзьями, мне несколько раз вылетала чужая страничка, с чужими друзьями.
Не знаю, писали ли об этом. Надеюсь, мое замечание вам пригодится)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Hello, I found that in "my submissions" page A submission was "in queue" and B submission was "pretests passed" when they both were in queue. About five minutes before the contest end I could not see others' solutions. However, that was successful in the middle of the contest.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    I think five minutes before the end of the contest, the Codeforces server was down. I could not open any other problem during this time nor see other codes even after locking my solution. Rest of the contest was fine.
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Ok, a short and funny contest at the beginning of the year.

I'm learning Python recently, so I try to write Python code today.
But it seems too slow to pass.

  • 13 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится
    But you're cgy4ever!! How could you let yourself use Python?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Me too, and I was not sure whether my B will pass; but it did!

    Of course it's risky to solve common contest problems in interpreted languages: a few million simple operations could easily time out.
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Багрепорт: в режиме дорешивания в окне просмотра тестов все тесты видны по два раза.
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
Да, ещё всё подупало на пару минут в районе 55-й минуты контеста. И страницы контеста, и страницы сайта не открывались.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    и около середины контеста падало
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Можно время точнее?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Разве что у вас в логах. Я в это время пускал питонную программу на некорректном тесте, мне написали "Исполняется..." и дальше всё упало на пару минут.

        Когда всё поднялось, через пару минут я ещё раз проверил на том же тесте, и мне честно вернули Runtime Error 1.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        20:44:17 где-то, но там вроде меньше по времени было
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I could not understand. Why the following code did not pass the system test?
System says "time limit exceeded on test 18". There is only one loop and it is to input numbers that's all.
Plus one loop from 1 to 3, which does not add much time..


import java.util.*;
public class T1 {
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);

        int n=sc.nextInt();
        int a[]=new int[4];

        for(int i=0;i<n;i++){
            a[sc.nextInt()]++;
        }
        int max=-2;
        for(int i=1;i<=3;i++){
            if(a[i]>max)
                max=a[i];
        }
       
               System.out.println(n-max);

    }//main
}//class
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Scanner reads numbers to slow. You should use faster methods like BufferedReader and StringTokenizer.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Scanner is very slow.
    Use BufferedReader+StringTokenizer+Integer.parseInt instead.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Фичарепорт: теперь результаты отображаются постранично.
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Хм, создавать 200000 сканнеров на джаве было плохой идеей =(
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
many thanks..
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Не мог бы кто-нибудь рассказать решение задачи С ?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится
    Попробуй прочитать это.
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
    Эту задачу очень просто свести, к точно такой же задаче на нециклическом массиве, просто разбивая некоторые запросы на два. То есть если у нас N = 10 и есть запрос lf = 0, rg = 6 мы его оставляем как есть, а если запрос lf = 7, rg = 2, то разбиваем на два первый lf = 0, rg = 2 и второй lf = 7, rg = N - 1 = 9. Далее после такого сведения нужно использовать стандартную структуру данных, дерево отрезков. Почитать про него можно на E-MAXX.ru
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Спасибо всем, пропихнул)
13 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
Будут ли результаты в не страничном виде?
Раньше вроде всегда через какое-то время появлялись.

UPD: уже появились, спасибо.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
At my submissions for problem A, each test is printed twice - with the verdict and all that
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Is there a way to see the hacks done by other participants?
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Фичареквест: а нельзя ли сообщать как-то о сдаче в твоей комнате по заблокированной тобой задаче? Чтобы без обновления страницы
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А можно ли как-нибудь скачать большой тест, который не помещается в окошке с решением?
Интересует тест 7 задачи C
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вы теперь сделали ссылку на timeanddate.com, классно

13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
Не хочу наговаривать, но у меня под линуксом (Ubuntu 10.04) в Firefox не отправляются комменты (при клике на "Оставить комментарий" просто перематывает наверх страницы), и не отображаются графики пользователей в профиле. Под Chromium всё работает хорошо.

У кого-то такое было/есть?

Firefox Version 3.6.12 for Ubuntu Canonical - 1.0
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    у меня было то же самое (+ отвалилась голосовалка за сообщения) из-за того, что фаерфоксовый adblock блокировал stat.codeforces.ru
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
У меня вылазили ошибки с друзьями. Список друзей все время изменялся и сейчас не все друзья отображаются в результатах друзей.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Может их убрали те, кто случайно попадал под твоим логином... :-D
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня тоже такое было. Но редко.
    Во вкладке "Результаты друзей" после обновления страницы могли оказаться совершенно другие участники.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I think you can add "remove message" option. It would be good to delete all junk messages.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
didn't receive an email before the contest .
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
I can't see the problem #43's A.
The page display just "RPC call for action failed."
Is it bug?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I am not able to open http://codeforces.com/contest/50/problem/C (this is problem C from contest 47) it says:
RPC call for action failed.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

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

Скриншот по этой ссылке http://img826.imageshack.us/i/somebug.jpg/

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

1. Заметил такую вещь: Ранее вы отсылали абсолютно такой же код.

Это очень здорово (я в дорешивании решал)! На контесте такое же предупреждение вылазит?

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

3. В дорешивании творится что-то очень ужасное... Там куча ошибок тестирования...

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
«Ранее вы отсылали абсолютно такой же код.» можно распространить до «Несколько секунд назад вы отправили точно такое же сообщение.» Тогда мы избавимся от кучи даблпостов. :-)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Any chance to get official analysis/solutions of the problems in this round? Especially problem C? :D
  • 13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    It's solved with strandart Segment_tree. Ask if needed more information.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      I have never written nor used a segment tree, so any additional information regarding the implementation and main idea of the problem would be very welcome.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
        Everything you need is here. The only 'non-standard' thing is that RMQ in the problem is circular, but since any 'wrapping' segment can be divided into two 'unwrapping' ones, this is not really an issue.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          I read the TopCoder article you specified and wrote a solution accordingly, but I get TLE on test case 8. :(

          Would anyone be willing to have a look at my code and show me what I am doing wrong?
13 лет назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

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

Короче, если последняя строка в файле имеет ненулевой отступ, то решение не компилится по причине unexpected ident. Я так понял что к файлу что-то системой дописывается, тогда надо б добавить перевод строки.

З.Ы. А есть тут где-нибудь специализированое место куда баги репортить? =)

UPD: баги и предложения...

13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
Что-то 39 раунд плохо тестируется: по задачам A,C и E приходит "Ошибка тестирования" :(

UPD: уже все хорошо