Автор frost_nova, 15 лет назад, По-русски
Мы рады приветствовать всех участников отборочного этапа “Яндекc.Алгоритм 2011 - Раунд 1”.

Авторами сегодняшнего тура являются сразу несколько человек, а именно: Виталий Гольдштейн, Игнат Колесниченко, Станислав Пак и Денис Ярец. Все мы являемся сотрудниками или интернами компании Яндекс. Мы очень признательны Артему Рахову, Марии Беловой и Михаилу Мирзаянову за оказание помощи в подготовке задач. Надеемся, наши задачи окажутся интересными и понравятся вам.

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

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

Раунд будет учитываться в рейтинге как для официальных участников отборочного этапа, так и для тех, кто не прошел квалификацию и участвует вне конкурса.

Желаем всем удачи и высокого рейтинга!

Контест завершен. Всем спасибо за участие! Особые поздравления победителю раунда tourist и 200-ке лидеров, вышедшей в следующий тур. Ждем вас на заключительном отборочном раунде послезавтра.

Разбор задач:  С, E
  • Проголосовать: нравится
  • +116
  • Проголосовать: не нравится

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Feature request:
Неплохо бы было видеть список зарегистрировавашихся только в конкурсе
15 лет назад, скрыть # |
 
Проголосовать: нравится -20 Проголосовать: не нравится
По-видимому, не все хотят соревноваться за выход в следующий тур. Пока заявились по конкурсу только 716 человек, и, похоже, успеют не все
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Неплохо бы при назначении тегов писать и русскую, и английскую версию для удобства поиска. А то так: http://mirror.codeforces.com/search?query=yandex одно, а так: http://mirror.codeforces.com/search?query=%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81 другое.
15 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится
А почему на главной отображается нулевое количество комментариев? Или это опять старый баг, который я только заметил? =)
15 лет назад, скрыть # |
 
Проголосовать: нравится +15 Проголосовать: не нравится
Good luck & Have fun!!
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
На чем все ломали C?
15 лет назад, скрыть # |
 
Проголосовать: нравится +14 Проголосовать: не нравится
Today I learned Yandex really likes trees! (And so do I, so I enjoyed today's problem set.)
15 лет назад, скрыть # |
 
Проголосовать: нравится +15 Проголосовать: не нравится
I liked watching the top 5 challenging each others at the last few minutes! Especially RAVEman and tourist! :)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
I wrote a test case generator for hacking for the first time (for Problem C), but I got an "integer 0 out of range [1, 1000000000]" error.

Any ideas why?

Here's the code: http://pastebin.com/79PFDzrG
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Does anybody know the pretest 4 for problem C?
What I did was a dp[position][didMistake] for each number.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Научите читать задачи!! О_о
15 лет назад, скрыть # |
 
Проголосовать: нравится -8 Проголосовать: не нравится
No one can beat tourist! Hard luck RAVEman.
15 лет назад, скрыть # |
 
Проголосовать: нравится +44 Проголосовать: не нравится
Very fast system test! in 13 minutes only :)
15 лет назад, скрыть # |
 
Проголосовать: нравится -35 Проголосовать: не нравится
Пора мне на пенсию))
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Задача Б оказалось слишком хитрой =( 

Какая асимптотика правильного решения и идея? Подскажите.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Я решал 4-мя мультисетами. Сложность O(NlogN). Просто в каждый момент времени выбирал человека с наименьшим временем и которого можно протолкнуть дальше и проталкивал.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      у меня решение с очередями за O(N)
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Да. Они всегда в очередях будут отсортированы. Но я как-то не подумал :)
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        с очередями или приоритетными очередями за NlogN ?

        если действительно за O(N)  то как именно?
        • 15 лет назад, скрыть # ^ |
          Rev. 2  
          Проголосовать: нравится 0 Проголосовать: не нравится

          с очередями, без приоритетов всяких

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

          посмотрим, когда чувак попадет на первую обработку. в очереди храняться моменты, когда заканчивается обработка очередного чувака. если размер ее меньше, чем k1,то значит, есть окошко, куда можно его сразу пропихнуть, иначе он пойдет в первое освободившееся окошко, т.е. в момент времени q1.front() и мы вынимаем первый элемент из очереди, и в любом случае добавляем себя. и так для всех трех очередей. Понятно, что в очередях элементы всегда будут возрастать, а значит, сет или чтото подобное ненужно
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +5 Проголосовать: не нравится

            Зачем вообще очереди? :)

            Просто вычисляем время окончания обслуживания j-го человека на i-ом шаге di, j, как время начала обслуживания плюс ti.

            А время начала - это максимум из времени окончания обслуживания j-го человека на i - 1-ом шаге (di - 1, j) и времени окончания обслуживания j - ki-го человека на i-ом шаге (di, j - ki), если такой человек существует.

            Ну и d0, j - просто время прихода.


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

      ну у меня 3 мультисета и 1 сет. Идея точно таже, но на 8 тесте ТЛ(
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Можно сделать тремя очередями, обрабатывая людей в порядке прихода. Достаем всех, кто уйдет до того как мы придем, потом ждем пока освободится окошко.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Решал бинпоиском по ответу
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +8 Проголосовать: не нравится
    Обслужываем клиентов в порядке прихода. По очереди обрабативаем 3 типа касс и после каждого храним новые времена прихода. Свободны касси храним в сете и выбираем ту которая освободится раньше всех.

    Извините за неграмотность.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Я за линию делал. В начале считаем что к первому окошку люди подходят с теми временами, что даны в условии. Потом симулируем работу первого окошка, получаем времена выхода людей из него и даем это на вход второму окошку и т.д..
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится

    1) Для каждого человека посчитаем, когда он закончит "обрабатываться" на инстанции 1,2,3
    2) Заметим, что люди будут вставать в очередь следующим образом: пусть есть три кассы и 8 людей. Тогда для первой кассы 1,4,7; для второй 2,5,8; для третьей 3,6
    3) Понятно, что худшее время будет для последнего
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится
    За о(n), жадник. Храним для каждого окна, когда оно освободиться и все, а для каждого человека будем выбирать либо свободную, либо если таковой нет, выбираем самую первую, которая освободиться. Храним все это 3-мя очередями.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится
    Либо сделать 4  приоритетные очереди -- одну для всех событий и ещё по одной для людей, ожидающих у каждого окошка. Это
    Либо заметить, что можно обработать окошки независимо и каждому следующему подавать на вход времена, в которые люди вышли из предыдущего. Это линия
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится

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

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

    Заводим очередь, в которую будем класть время выхода с этапа очередного человека. Теперь просматриваем всех людей в порядке их прихода на этап. Сначала удаляем из очереди всех людей, у кого время выхода с этапа меньше или равно времени прихода нового человека (они идут в начале).Теперь если в очереди меньше k элементов, то человек будет обслужен сразу после прихода его на этап, поэтому кладем его в очередь, добавив к его времени прихода время обслуживания t. Иначе удаляем из очереди начальные элементы, пока в очереди не останется k-1 элемент - время удаления последнего элемента и будет время, когда начнут обслуживать очередного человека, к нему тоже добавляется t и кладется в очередь.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    3 раза решаем одну и ту же задачу - куча народа с некоторыми временами прихода, и k касс с фиксированным временем обслуживания t.

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

    Можно доказать, что времена выхода чуваков тоже будут идти в порядке возрастания, как и приходы (т.к. все одно и то же время обслуживаются). Итого ничего не надо сортировать. Решение за O(n).
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Я единственный с деревом отрезков делал?
    Если каких-то касс больше чем людей, понятно, дерева не надо, к данному типу касс очереди не будет.
    Иначе в вершине дерева храним во сколько освободится следующая касса.
15 лет назад, скрыть # |
 
Проголосовать: нравится +51 Проголосовать: не нравится
Как обидно быть 201м...
15 лет назад, скрыть # |
 
Проголосовать: нравится -13 Проголосовать: не нравится
А меня взломали некорректным тестом! В дорешивании задача сразу сдалась, а в комнате - взлом =(((
15 лет назад, скрыть # |
 
Проголосовать: нравится +61 Проголосовать: не нравится
I was very lucky. 20 seconds before the end of the contest I've solved only A, but I qualified!
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Problem B seemed interesting though i couldnt solve it. Can anyone share the idea?
15 лет назад, скрыть # |
Rev. 9  
Проголосовать: нравится +7 Проголосовать: не нравится

Разве претест 3 в задаче C корректен? Он таков. 



5

2 5

-1 10

1 3

1 7
 

2 15

6
 
1

4

6

8

11

20 

Ответ безразличен, поскольку само дерево - не есть бинарное дерево поиска, на мой взгляд.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Почему место в Яндекс.Алгоритм 2011 - Раунд 1 на графике с моим рейтингом указывается с учетом участников выступавших вне конкурса?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
ИМХО D намного проще B и С.
Гарантируется ли что сложность A<B<C<D<E ?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
For each window, you save when a person can reach it the first time. This is the maximum of the time the person arrived (or did go to the window before) plus the time it takes for that window and the time the kth person before him finished plus the time it takes for that window.
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Е точно была проще D
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Да, а выше писали что D намного проще B и C. Выходит что Е - вторая по сложности задача на контесте? :)

    Сложность нельзя оценить объективно и уж точно нельзя так категорично заявлять, особенно если Е сдало в 7 раз меньше людей, чем D.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +26 Проголосовать: не нравится
      > особенно если Е сдало в 7 раз меньше людей, чем D.
      Наверное, это тоже не слишком хороший показатель, так как многие читают задачи исключительно по порядку, и решают их тоже по порядку. Плюс ещё психологический фактор в духе "да ну, это же Е, наверняка там что-то очень замысловатое". Уверен, что если бы поменять местами D и Е, то разница была бы совсем другой, но это никак не проверить, конечно =)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Кстати, расскажите тогда как ее решать, очень интересно.
    • 15 лет назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится 0 Проголосовать: не нравится

      Пусть мы знаем ответ. Тогда построим граф (на самом деле его не надо будет строить)
      где ребро между парой вершин есть если их расстояние > ответа. Тогда все пары которые соединены ребром должны относиться к разным генералам т.е. - быть разных цветов. Такая раскраска возможна только, когда граф двудолен. Будем добавлять ребра от самых длинных к более коротким (их можно отсортить сортировкой подсчетом) и смотреть нарушилась ли двудольность или нет. Как тока нарушилась, то мы нашли ответ. А второй параметр ответа это просто 2^(число компонент связности)
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Черт, это и вправду очевидно. Но по мне так и С очевидна, и декартово дерево в D, хотя его писать однозначно дольше.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          А можно подробнее о декартовом дереве ?
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Декартовое дерево умеет считать любую функцию, которую можно пересчитать, зная что-то про детей. Собтсвенно, как и дерево отрезков, но декартово еще при этом иногда перестраивается.

            Я считал две функции - количество детей в поддереве (пересчитывается очевидно), и для каждого остатка по модулю пять сумму ключей в таких позициях.
            Пересчитывать тоже очевидно: перебрали остаток в ребёнке, посмотрели, сколько слева (либо 0, если левый ребёнок, либо 1 + sz[right], если правый) и прибавили туда.
15 лет назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится
Is everyone going to post their solutions for B ? :) They all look the same and it's not interesting.

I think C and D are much more interesting to discuss.

In D I used  N*Sqrt(N) algorithm which looked obvious to me. The most popular approach was cartesian tree.  Some others used Interval trees.

I think C was harder than D. I looked at some passed codes and they look like O(N^2), but I am not sure.


  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +1 Проголосовать: не нравится
    I made a solution for C using Fenwick Tree and I haven't seen any solution like mine :D
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      In C I also can't find the solution similar to mine :)  I saw some easier solutions.

      Still, D allowed much more different solutions and therefore, it was easier than C in my opinion.

      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        I've got a segment tree solution for problem D. It's an offline algorithm, I find all values which I can have. Then I sort and take the unique elements. This is the reference array for my segment tree. The actual array for the segment tree is a boolean valued array, which represents if the i-th element exists in the set or not.
        I run a dp/segment tree kind of query from the root for each sum query. I compute the number of elements in the left subtree (using another count dp/segtree). The the offset for the right subtree is (parentOffset + left)%5
        In this way I get the list of all elements in log(n)

        For every update, I start at the leaf and proceed towards the root, unsetting all the dp values.

        I liked this idea, it was going around in my head for a while, finally implemented it today :) 
15 лет назад, скрыть # |
 
Проголосовать: нравится +7 Проголосовать: не нравится
В задаче B: Количество окон до 109. Спасибо, ёлки-палки, за дополнительный контест по бисерочитанию условия!!

Блин. Нет, ну конечно же, я сам себе злобный буратино (не отрицаю), что завёл массив размера, равного количеству окон. А вот те, кто не задумываясь заводит эти (цензура) ужасные массивы var a: array[0..100010] of integer и int a[100010], оказались в выигрыше! :-(((

А так, спасибо за контест! :)
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Только мне кажется неправильным, что в D проходит квадрат? Я не хочу утверждать, что это недопустимо, но если авторы хотели сделать, чтоб прошел квадрат, зачем ограничения до 100000?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Думаю это ошибка авторов. Не думаю что стоит сильно обращать внимание - на результаты контеста это не сильно повлияло. Чтобы такое реже случалось надо добавлять к тестам взломы, но видимо тогда результатов тестирования придется ждать несколько часов.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Будем набирать набор хаков постепенно в течение всего контеста. Если решение хакнули, тестируем его на хаках из набора, и если все тесты проходят успешно, добавляем хак в набор.

      Думаю +10-15 хаков к каждой задаче не убьют систему.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Да, и еще вопрос. Это проблема ограничений или тестов? А то у меня решение очень уж слабо отличается от квадратичных по времени выполнения. Обидно даже.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        В D - возможно ограничений. Там в квадратичном решение всякие /5 возникают на самом деле, а квадрат от 20000 это не сильно и много то в общем-то для 4-ех секунд(или их там было 3?). Но в С - однозначно косяк тестов.
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +10 Проголосовать: не нравится

Кстати о камшеках в огород тестов:

Я внезапно обнаружил, что  у меня решение С за квадрат. (каждый раз проходом определял границы массива ключей, которые попадают в текущий отрезок). 880мс. Не то, чтобы я против, но все же)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Так Вы попросите админов, чтобы взломы в тесты добавлялись, - и всё справедливо будет :)
  • 15 лет назад, скрыть # ^ |
    Rev. 3  
    Проголосовать: нравится +8 Проголосовать: не нравится

    Тут не в тестах проблемма, а в компах ---  как-то все очень шустро летает.
    Вон --- и по D у человека прошел квадрат.
    А в прошлый раз я словил бревно пытаясь хакнуть человека с 10^9 за линию.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +18 Проголосовать: не нравится
      Компьютеры на codeforces настолько быстры, что не только тестирование длится около 15 минут, но и проходят асимптотически неверные решения.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +1 Проголосовать: не нравится
        Пользуясь случаем, хочу спросить у администрации: есть ли в планах проверять задачи на полном наборе тестов по ходу контеста? И если есть, то в насколько близких планах оно находится. Большое спасибо.
15 лет назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится
Problem E may be too easy.
Just a little bit tight time limit.
An easy o(n^2 log n) solution with small time constant can pass ...
15 лет назад, скрыть # |
 
Проголосовать: нравится +18 Проголосовать: не нравится
Долго думал почему у меня не проходит задача В, пока не посмотрел на строчку #define INF 10^9.
15 лет назад, скрыть # |
Rev. 4  
Проголосовать: нравится -32 Проголосовать: не нравится

Блин, полнейшее свинство!!! За 5 минут до конца начал сдавать Е, словил МЛ 1.
В дорешке выяснилось, что решение абсолютно верное, только чтобы оно прошло, требовалось
1). Резервить векторы по Н
2). Делать массив расстояний ломанным (a[i]=new int[i+1])
3). Хранить вместо тройки (пара вершин ребра, длина) число (вершина1*н+вершина 2).
И при этом зашло с 246мб памяти.

Я понимаю, что может массив расстояний можно было вообще не хранить а подсчитывать на лету, и может авторка юзает линию памяти, но было бы хорошим тоном позволить участникам писать хотя бы в пределах 512мб, учитывая, что решения имеют одинаковую ассимптотику и учитывая объемы данных задачи((
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +18 Проголосовать: не нравится
    Короткевич в 1 mb уложился
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +12 Проголосовать: не нравится
    Странно, что 256мб не хватало, авторские решения использовали куда меньше памяти (порядка 100мб), поэтому мысли о том, что 256мб не хватит практически не возникало...
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +8 Проголосовать: не нравится
      Еще раз подумав, хочу извиниться, я, наверное, чересчур резко прореагировал, потому что решение было верным. В конце концов, если ТЛ увеличивают в 2 раза, ориентируюясь на кривые руки участников, то почему бы не делать то же с Млом?..
      Просто как-то расстроило, что с ТЛом проблем в общем не было, а с МЛом пришлось так извращаться, кодя в общем-то здравое вполне решение.
15 лет назад, скрыть # |
 
Проголосовать: нравится +18 Проголосовать: не нравится
Интересно, кто нибудь кроме меня такой изврат писал в D? Создадим 5 декартовых деревьев, в каждом храним числа с заданным остатком по модулю 5. При добавлении и удалении разделяем их на 10 половинок по ключу, затем склеиваем со сдвигом, т.к. правая часть чисел с остатком 2 теперь имеют остаток 3 или 1.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Кстати, только у меня на главной отображается, что количество комментов - 58?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Очень обидно что из за олимпиады в физтехе из за которой не было возможности зарегестрироваться с 7 до 19 на тур не было возможности поучатсвовать в раунде отбора
15 лет назад, скрыть # |
 
Проголосовать: нравится -12 Проголосовать: не нравится
Increase the number of programmers qualifying for the second round if u can 200 seems too less.... :-|
15 лет назад, скрыть # |
 
Проголосовать: нравится +7 Проголосовать: не нравится
Писать завтра второй раунд в комнате для неудачников или не писать? :-X
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    На самом деле я тоже чудом проскочил, странные задачи были, рандом некоторый есть, так что не неудачники там будут. А те кому просто just for fun хочется порешать вечером воскресенья, вместо тысячи более глупых занатий, они выберут контест в своё удовольствие. А во вторых если там по твоему там будут лузеры, так ты только в рейтинге подрастешь, чем плохо?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Так вот у меня просто как-то другие занятия just for fun намечаются на вечер воскресенья, выбирай - не хочу. А по рейтингу вроде как контест ничем не лучше и не хуже другого.
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +6 Проголосовать: не нравится

Why there are passed O(N^2 log N) solutions in problem D's status? Like this one with id 464685:

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

#define long long long

#ifdef DEBUG
#define WATCH(x) (cerr << #x << '=' << (x) << endl)
#define TRACE(x) (cerr << (x) << endl)
#else
#define WATCH(x) /*()*/
#define TRACE(x) /*()*/
#endif

vector<int> v;
int n;
int main() {
    cin >> n;
    v.reserve(n);
    for(int i = 0; i < n; ++i) {
        string s; cin >> s;
        if (s == "sum") {
            int l = v.size();
            long sum = 0;
            for(int i = 2; i < l; i += 5) {
                sum += v[i];
            }
            cout << sum << endl;
        } else {
            int x; cin >> x;
            if (s == "add") {              
                v.insert(lower_bound(v.begin(), v.end(), x), x);
            } else { // s == "del"
                v.erase(lower_bound(v.begin(), v.end(), x));
            }
        }
    }
}

15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится
Не туда.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
I found a small bug on codeforces: top-rated on the top page looks a bit old. http://gyazo.com/9c850d39ab001b012816baaf52becd9a.png
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Does smb have problems with registration outside the Round 2?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Интересуюсь не из желания восстановить справедливость, а из чистого любопытства. В первом раунде у меня было 74 место и итоговый рейтинг получался 2126. Но это было вчера. А сегодня я вчера выступил на 75 место и итоговый рейтинг имею 2125. Что-то произошло с таблицей результатов?
»
6 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

E was quite actually nice problem. Nice concept. Thanks for the round.