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

Автор RAD, 14 лет назад, По-русски
Этим контестом мы хотим всех поздравить с наступившим новым учебным годом. Желаем отличных оценок, халяв на сессии и Accepted на контестах. Пусть этот год принесет вам много новых интересных знаний! 

Артем Рахов и команда Codeforces

P. S. Обратите внимание, что раунд пройдет по правилам Codeforces. Ознакомьтесь с правилами до начала соревнования. Удачи!

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

14 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
Удачи всем!
14 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
Can you please translate this post to English?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Зачем люди из 1 дивизиона специально регистрируются на 2 дивизион?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Может быть, чтобы поучаствовать? :)
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      А в первом дивизионе не судьба? Либо хотят самоутвердиться?

      Вот поэтому желательно бы делать отдельные соревнования для обоих дивов в одно время

      А то куча "умных" среди первых мест. Хоть я и не претендую на первые строчки даже во 2м диве, все равно мало приятного

      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        результаты участия первого дивизиона в положении не учитываются
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          А ты посмотри на комментатора на этой ветке ;)
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            если ты имеешь ввиду участие под другим аккаунтом, то это действительно не честно
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            ну если честно, то я думал, что нельзя под старым аккаунтом участвовать :)
14 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Спасибо за контест!
Задачи отличные!
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Замечу, что из-под firefox 3.6.9, flashplugin 10.1.82.76 под 64-разрядным линуксом не скроллились страницы вражеского кода при взламывании — получилась некоторого рода лотерея.
За контест спасибо. :-)
14 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Поздравляю кодера ant.ermilov, который совершил успешный взлом almaz_kh по задаче E - Число с заданным количеством делителей за 19 секунд до окончания контеста!
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    спасибо :)
    хочется отметить, что за последнюю минуту получилось отослать 2 взлома с ответом >=MaxInt64
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Прозьба , пишите текст , который нужно вывести в кавычках , а то у меня 4 отправки лишние, изза того что я вывожу "Impossible." .В конце точка.
14 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

Однако печально, что очевидный способ взлома по первой задаче, когда подаёшь n=3000 и ряд из 3000 чисел, некоторые не предусмотрели. +4 взлома )

Было круто! 

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    На этом ты меня и поломал)) Спасибо! Так бы не и нашел этой ошибки))
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I want to know the 22nd test of problem E!!!!!
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
D is just a 2-sat problem???
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What's 11th test of problem C?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    +1
    Also need this test!
    • 14 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится
      Copy AC solution and generate some test(for example 50), and check it. Or read right idea more carefully. 
      P.S. sorry for my poor english =(
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Some big test. N = 10^5, but there are only 2 different numbers. The answer is:
    3
    1 3 4

    May be your program does not work properly with equal numbers?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Now I need 18th test of problem C
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What is the 6th test case for C??
Or any hints about C?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
We can't see others solutions?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
RAD, could you tell me the input and output for the 4th test case in problem E? Thank you.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What is the 7th test case for E?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What about the second problem. Is it possible to solve it using DFS ?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Easiest way to solve is to use transitive property of comparison.
    i.e. if for x and y participants exist such another participant(z), that 
    • p_x>p_z & p_z>p_y (won x and lost to y) => p_x>p_y (y better x)
    • p_x<p_z & p_z<p_y (lost to x and won y) => p_x<p_y (x better y)
     Otherwise we cannot define outcome and able to output any.

    PS. IMHO TopSort absolutely crazy for that problem ;)
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    yes. because everyone has a "pj", we can think the input as a directional Graph. if a and b appear less than N-1 times, then dfs(a,b)-bool. if a can reach b, we can see a win b.

    Just as SKYDOS 's TopSort.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Скажите пожалуйста, когда появятся решения? Очень интересно узнать их. Так например, какое решение предполагалось в задаче С?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Ну в задаче C всего 2 варианта. Либо есть решение и такая подпоследовательность всегда длиной 3, либо нет. Если есть то ищем в какой точке экстремум и выводим например

    1 [номер экстремума] n

    Если же нет, то выводим 0

    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ой, как все просто! А я, дурак, написал дерево отрезков( Но хоть оно работает :)
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Разве экстремум не может совпасть как с первым, так и с последним элементом?
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Но разве он тогда будет экстремумом? Мы же не экстраполируем эти точки и не знаем что дальше)
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Ну вот такой тест например
          1 1 2 3 4 5 5 4 3 2 1 1 1 4 5 5.
          Ни первый, ни последний тест в ответе не участвуют.
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Ниже отписался)))
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Но кстати моя программа выдала бы

            1 7 8

            Так что первый все-таки вполне себе участник)

    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      именно такое решение не проходит
      контрпример:
      4
      3 2 3 2
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Ну да) Не подумал, в моем решении было не вывод n в конце, а вывод следующего после экстремума (причем если например  3 2 2 2 3 2, то учитывается 2 на позиции 4, то есть моя программа выдавала 1 4 5) =)

        Спасибо, что поправили. Действительно я ошибся) Извините

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
In problem B how it's supossed to write the numbers??
I did it like
cout<<num1<<" "<<num2<<endl;

but I got P.E. on test 1
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    pls, show your code.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      here is my code:

      #include <iostream>
      #include <cstring>
      using namespace std;

      int games[60][60];
      int winsto[60][60];

      bool getsToWinTo(int i, int j)
      {
           for(int ii=1; ii<=60; ii++)
           {
               if(winsto[i][ii] && winsto[ii][j])
               return true;         
           }
           return false;
      }

      int main()
      {
          int n;
          cin>>n;
          int a,b;
          memset(games,0,sizeof(games));
          int t=n*(n-1);
          t/=2;
          t--;
          //cout<<tope<<endl;
          for(int i=0; i<t; i++)
          {
                  cin>>a>>b;
                  games[a][b]=1;
                  games[b][a]=1;
                  winsto[a][b]=1;
          }
          bool done=false;
          for(int i=1; i<=n; i++)
          {
                  for(int j=1; j<=n; j++)
                  {
                          if(i==j) continue;
                          if(!games[i][j] && getsToWinTo(i,j))
                          {
                                cout<<i<<' '<<j<<endl;
                                done=true;
                                break;   
                          }        
                  }       
                  if(done) break;
          }
          //cin>>a;
          
          return 0;    
      }
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        lol, same idea as mine :)
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          same idea as right ;)
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            but i got P.E. T_T
            • 14 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              after i changed content of your inner cycle to:

              if(i==j) continue;
              if(!games[i][j])
              {
              if(getsToWinTo(i,j))
              cout<<i<<" "<<j<<endl; 
              else
              cout<<j<<" "<<i<<endl;
              return 0;
              }

              it got AC

              explanation: sometimes there is no such ii, that we can exactly determine outcome of battle between x and y.

              example:
              3
              1 2
              1 3
              • 14 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                forgot about reason of PE:
                seems, that ' ' is not valid char constant, but " " is
                • 14 лет назад, # ^ |
                    Проголосовать: нравится +1 Проголосовать: не нравится
                  Original solution outputs nothing on test
                  3
                  1 2
                  1 3
                  That's the reason of PE, not the ' '.
                  • 14 лет назад, # ^ |
                      Проголосовать: нравится 0 Проголосовать: не нравится
                    You're right, I thought, that PE appear at PreTest#1, not MainTest #1.
                    PS. I never tried to use ' ' (and haven't any lections at C) so post above is just theory.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Что за ошибка
 Ошибка представления данных на тесте 1

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
RAD: Can I please have test case 18 for C, and 10 for D...? Thanks
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Test 18 for C is big random test, test 10 for D:
    6 4
    6 3
    1 3
    6 4
    5 3
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Now can I have test case 23 for D please. :)

      It'll be really great if the test cases were available in practice mode, just like in TC. 
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
can i know what is the test case 3 for Problem B???
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can someone post an idea for Problem E ?

Thanx ! :)

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
my solution about A B C.
hope can do something to you.

i want to know how to do C and E.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What is the test case #3 for problem E?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Hey, 

How can I view others solutions? The popup box which appears doesn't have the  other  code.
14 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
I generated a huge data to hack a TLE solution, but the judge says 'submit already challenged'. What does this mean??? 
I wasted a lot of time to try to hack it, But this solution hadn't been hacked until faild on system tests.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Can someone please have a look at my solutions to problem C and D and help me identify the flaws in it...

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I want to know the test 15th of problem B
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Дайте пожалуйста тест 1 на С и тест 1 на В
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    так вроде такие, как сэмплы.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      У меня просто на финальном тестировании
      B и C не прошла из-за ошибки представления данных на тесте 1
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Кинь сюда код http://paste.ubuntu.com попробуем найти в чем может быть проблема.
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            попробуй во второй строку:
             writeln(q,' ',q1);

            заменить на
            writeln(q," ",q1);

            там кто-то писал на С++ и поставил ' ' и тоже была ошибка
            как только заменил на " " получил АС.

            • 14 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              синтаксис паскаля не позволяет
              • 14 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Проверил разные варианты и под дельфи и под Фри Паслькаль.
                Даже такое выдает "Ошибку презентации".
                var
                 mv,ml:array[1..100,1..100] of longint;
                 i1,q,q1,n,m,i,j,x,y:longint;
                begin
                write(4,' ',3);
                end.

                попробуй переписать на С++ или на другом языке, который знаешь.

                Если хочешь могу проверить твой же код, но на шарпе.
            • 14 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Я потестил ту прогу и там не ' ' и " "было решением проблемы, а неверный алгоритм.
              PE не от этого был, а от того, что программа ничего не выводила вовсе.
              • 14 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Дай пожалуйста тест
              • 14 лет назад, # ^ |
                  Проголосовать: нравится +1 Проголосовать: не нравится
                да-да! только что перечитал эту часть, действительно там ничего не выводилось.
                Но почему выше код, который я указал выдает ПЕ непонятно... там же или ВА (если не равно сэмплу) либо АС и ВА на втором тесте.
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            в В есть хороший тест (он дал мне 200 поинтов :-Р):
            2
            1 2
            1 3

            другими словами, бывает так, что не найдётся хорошего i1.
            В таком случае надо вывести пару в любом порядке.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Тест 1 в задаче C:
    3
    3 1 2

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Переношу сюда.
И действительно странно, что вот это
#include <cstdio>
int main() {
    puts("4 3");
    return 0;
}
PE #1.

Это
#include <cstdio>
int main() {
    puts("3 4");
    return 0;
}
 - PE #1.

А это
#include <cstdio>
int main() {
    puts("1 2");
    return 0;
}
WA #1.

o_O
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Что же чекер ожидает от нас увидеть? Уже кучу всего перепробовал.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    +1
    сам заметил такое и с Дельфи и Фри Паскалем.
    Поддерживаю Макса.
    ЧЗХ?
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      А я кажется понял в чём там проблема. :)

      #include <cstdio>
      int s;
      int main() {
          scanf("%d", &s);
          if ( s == 4 )
              puts("4 3");
          else
              puts("1 2");
          return 0;
      }
      WA #1.

      #include <cstdio>
      int main() {
          puts("3 1");
          return 0;
      }
      WA #2

      Значит на входе у нас скорее всего N = 3, а мы тут ему хоп - 4 3 выдаём. А откуда у тебя 4 если N = 3? Вот тебе Ошибка представления данных.

      Только не знаю, нормальное ли это поведение для чекера.
      А ещё, возможно, нехорошо, что сэмплтест не является первым финальным тестом.
      • 14 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится
        Действительно, чекер так и работает: пытается считать целое число от 1 до N, если не получилось - Ошибка представления данных, так что такое поведение совершенно нормально.

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

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Nice problem set (Y).

Other solution for problem E could be:
* Factorize N (assume that M will be the number of prime factors) -- O(sqrt(N))
* Calculate all the possible arrays b[1..M'] (M' <= M) multiplying i prime factors of N (with i: 0 <= i <= m) -- O(M * 2 ^ M))
* Sort the resulting array b[1..M'] in non-increasing order -- O(M' log M')
* Calculate a number X (X = 2 ^ (b[1] - 1) * 3 ^ (b[2] - 1]) * 5 ^ (b[3] - 1) ...) -- O(M' log N)
* Take the minimum X among all the possible arrays -- O(sqrt(N) + M * 2 ^ M * (M' log M' + M' log N)). This algorithm will run in time.

For example,
N = 16
* b = [2, 2, 2, 2] -> 210
* b = [4, 2, 2] -> 120
* b = [4, 4] -> 216
* b = [8, 2] -> 384
* b = [16] -> 32678
(Some arrays may appear several times)

I wanted to share this information with you, but, IMO DP is a more elegant (and shorter) solution for this problem =).
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Can I see D's test 11?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    6 5
    5 3
    4 1
    2 6
    5 1
    5 2
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      I have this solution for this problem. This is the exact same solution I submitted during the contest (I corrected only couple of identations). I have tested it against your test and got ioioi, which seems to be correct answer. Still I get wa 11 when submitting. Any ideas of flaws in my algorithm?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Может мне кто-то помочь с задачой С. выдает "неправельный ответ на тесте 17"

int a[100010], b[3];
int n;
bool res;
int main() {
    int k = 1;
    scanf("%d", &n);
    scanf("%d %d", &a[0], &a[1]);
    for (int i = 2; i < n; ++i) {
        scanf("%d", &a[i]);
        if (a[0] > a[k]) {
            if (a[k] < a[i]) { b[2] = i + 1; res = true; break; }
            else ++k;
        } else {
            if (a[k] > a[i]) { b[2] = i + 1; res = true; break; }
            else ++k;
        }
    }
    b[0] = 1;
    b[1] = k + 1;
    if (res == false) printf("0\n");
    else printf("3\n%d %d %d\n", b[0], b[1], b[2]);
    return 0;
}
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
What is C's test case 19 ?
I`m getting WA :((