Автор Dormi, 7 дней назад, перевод, По-русски

Привет, Codeforces!

Присоединяйтесь к объединенному Div. 1 и Div. 2 раунду Codeforces LATOKEN Round 1 (Div. 1 + Div. 2), который будет проходить при поддержке LATOKEN и начнётся в 13.06.2021 18:35 (Московское время). Он будет рейтинговым и открытым для обоих дивизионов.

Все задачи были придуманы и подготовлены Aaeria, crackersamdjam, Dormi, Ninjaclasher, и Plasmatic при поддержке Codeforces, LATOKEN и Валентина Преображенского. Большое спасибо 300iq, arvindr9, crackersamdjam, Delmos, duality, growup974, KAN, m371, PurpleCrayon, rkm62, socho, wleung_bvg, Zeyu за тестирование раунда и отличные советы, а также MikeMirzayanov за системы Codeforces и Polygon.

Участникам будет предложено 8 задач и 3 часа на их решение. Пожалуйста, прочитайте условия всех задач. Всем успешного раунда и повышения в рейтинге!

Спасибо компании LATOKEN за подарки участникам! Призы для победителей:

  • 1 место = MacBook Air M1 + предложение работать в компании с получением акций
  • 2 место = Xiaomi Mi 11 + предложение работать в компании с получением акций
  • 3 место = Xiaomi Mi Notebook Pro 15" Enhanced Edition + предложение работать в компании с получением акций
  • 4-10 место = Предложение работать в компании с получением акций + Merchandise Pack
  • 11-55 = Merchandise Pack

Случайные 10 участников(из тех, для кого этот раунд будет не первым рейтинговым соревнованием Codeforces!, не вошедшие в топ-55, но решившие хотя бы одну задачу, получат фирменные футболки.

Несколько слов от команды LATOKEN:

Приветствуем Вас сегодня на Битве Сильнейших! LATOKEN — компания, которая стремится сделать криптовалюту более доступной чем социальные сети. Мы стремимся всегда брать лучших в команду и это видно по результатам компании: мы входим в топ 15 лучших криптобирж по версии Coingecko, у нас более 600 000 установок приложения за первый год его запуска, число пользователей — превысило миллион. Новая финансовая система, которая строится благодаря блокчейну, более перспективна, ведь криптовалюта, по-настоящему глобальна и мало зависит от государственных центральных банков.

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

Bot→
Contact Form →

UPD: Разбалловка: 500 — 1000 — 1250 — 1500 — 2250 — (1750 — 1250) — 3250 — 3500.

UPD: Разбор.

Поздравляем победителей! Призы будут распределены в течение нескольких дней после удаления нечестных участников.

  1. Benq
  2. tourist
  3. Radewoosh
  4. Endagorion
  5. ecnerwala
  6. heno239
  7. peehs_moorhsum
  8. gamegame
  9. Pyqe
  10. maroonrk
 
 
 
 
  • Проголосовать: нравится
  • +621
  • Проголосовать: не нравится

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

Do the contest or TLE real life

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

As a tester, the problems are great, as always. I hope you enjoy one of the first Canadian rounds!

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

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

Mandatory "tourist, What will you do with your MacBook Air M1?" comment.

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

I was just wondering why 1st-3rd placed participants are not being offered the job while 4th-10th are XD.

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

He is Valentin Preobrazhenskiy not Valentine.

»
6 дней назад, # |
Rev. 4   Проголосовать: нравится +17 Проголосовать: не нравится
"Random 10 participants outside of top-55, who solved at least one problem and participated in rated Codeforces rounds before, will get a t-shirt!"

Am I going to be the one of those 10 ? rounding up number of people solving atleast 1 problem to 20000 as we have 3 hours given probaility is ( 1/(20000)), . It comes out to be (0.00005)

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

    Well almost, you need to multiply 0.00005 by 10, because "Random 10 participants outside of top-55...". So that's 0.00005*10 = 0.0005. But I don't think it changes anything)

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

be annoy of the suck statement at last several round.

statements are short look forward to this round.

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

Unfortunately, the start time is 11.35 PM in my area :(

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

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

As a tester I must say the problems are nice and interesting. May you all get a positive delta.

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

If you forgot to see the prizes section of the post.

Do visit again!

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

very weird time :|

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

Not interactive again

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

Codeforces if True Love.

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

Just switched from Instagram to Codeforces, a few days back, and trust me Codeforces is much better.

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

note the unusual start time

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

4th-10th place = *Job offering* and Stock Options + Merchandise Pack

I want this level of confidence in my life.

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

This forces us to stay up late in night. :(

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

I will sleep during the round.

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

Another MacBook for tourist`

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

Codeforces is the best ❤️

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

Is it rated?

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

Sorry I'm getting back to CF after many years and now I see there is also a Div3. Will this round also be rated for Div3 folks?

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

    Yes, there is pretty much no div3 as such. Anyone who's a div3 is also a valid div2

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

    As now there's also a Div4 you're Div4. But all contests of higher divisions than your division are rated for you. Unless round has separate contests for separate divisions. Because then you can only participate in your division contest.

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

Just switched from Instagram to Codeforces, a few days back, and trust me Codeforces is much better.

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

I guess top gear isn't popular here :/

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

wannahavealife 1000-7 ? ? ? ?

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

it will be unrated for div 3??

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

A couple more years and I can finally win a prize. (Hopefully)

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

Screenshot-20210611220724-857x462

Seems codeforces finally realized nobody reads this rules anyways, so they just removed it lol

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

This contest is rated for division 3 or not?

Any please replay

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

    Yes

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

    Every div3 member is also considered a part of div2 too. So hopefully it would be rated for everybody

    It will be a combined rated round for both divisions.

    @authors can you please help with this ambiguous statment maybe write it "rated for everybody" ?

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

interesting interactive problem. I hopeeeeeee

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

RIP my hairs after 3 hours :(

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

Code + Meme = Peace

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

Contest will clash with Roland Garros finals :(

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

    I mean, it's dealing with crypto, and crypto is highly unregulated...

    But anyways, free money for CF!

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

congrats for new macbook tourist

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

Is this contest rated?

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

The scoring distribution is 500 — 1000 — 1250 — 1500 — 2250 — (1750 — 1250) — 3250 — 3500

(1750-1250) means?? can anyone explain please.

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

    There will be two parts to the problem. One easier version(F1-1750) and one hard(F2-1250).

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

One More Macbook to tourist

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

LOL!

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

so are the ratings of questions according to div 1 or div 2. Hope that this round will not be like the deltix round

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

For some reason there is a scoring distribution update in the English version of this blog post, but there is no one in Russian version.

UPD: It's ok now.

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

Great

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

Don't forget to consider the UNUSUAL START TIME

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

For real, what's the point of making combined round when there are enough problems to split round for both divisions? Nobody from div1 wants to solve first few problems as well as nobody from div2 even reads last few problems

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

Hope! this round will go better for me than the Deltix round

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

Downvotes coming in from other Grandmasters on codeforces and radewoosh ! LOL ! Truth is bitter guys !

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

The entire comment section in one not-somewhat-related meme:

picsart-06-13-05-14-58

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

Most People: This is definitely my chance to prove myself and get MacBook Air!! Tourist: This is definitely my chance to be first again!!

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

I am betting that tourist will not win this round. It will be some other LGM.

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

it's div1 + div2 = div3 :)

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

I wonder why there was no official announcement in the blog of unusual timing and even more surprisingly no one in the comments sections pointed that out. I opened my laptop just now to notice this.

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

today junior tesla is expecting to solve 4 problems and upsolve extra 1 problem. Lets see.

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

Thanks to Djokovic I can convince myself that my rating crashed because I was watching Roland Garros finale
while giving the contest.

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

Are B pretests weak, or did I solve by mistake? hopefully, it gets FST.:)

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

In Problem C
IMG-20210613-220345

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

Div 1+2 = rating loss

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

It takes eternity for queue to end

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

queueforces

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

There are no running submissions.

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

Is this still rated because the queue has been stuck for a long time now ?

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

I'm waiting for the results of my submissions from last 10 min.

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

queue too long.

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

People who are in queue are gonna remain in the queue forever if the number of running submissions is zero.

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

hope this contest will be unrated

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

In queue!! ;(

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

I always wanted to do it, and today I finally did

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

If someone wrongly pastes commented solution of A in problem B's submission, and locks problem B alone, won't this be a problem as others in room who have not solved A can see solution of A by solving only problem B ? And what if someone has commented previous problems solutions for all submissions ? How does codeforces handle this ? MikeMirzayanov

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

    Nice doubt xD (No one can handle this I believe).

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

    Do you mean that somebody uploads their solution for A instead of a solution for B by mistake? But a solution for A is very unlikely to pass pretests for B. And it makes no sense to show the source code of failed submissions to hackers (I don't know if that's how it really works, because I have never tried hacking other solutions in non-educational rounds yet).

    Or do you mean that somebody submits a valid solution for B, together with a commented out solution for A in the same source file? Is anyone ever doing something like this? I do sometimes use my A solution's source code as an initial template for B. But by the time when I'm ready to submit it, no parts of A remain there.

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

Anyone else having difficulty to understand the Problem C? Or am I the only one?

UPD: I got it. And I'm stupid. :(

UPD2: I think, I solved it.

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

    I perfectly understand it, the only problem is I am stupid and cannot figure out how to solve it ;)

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

    I spent half an hour, read several times, and don't understand what it means by "only by swapping numbers in a column". and finally I ask a question to admin, and then I got it.

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

      Yes, I didn't notice the announcement first. I felt really dumb noticing it after few minutes.

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

interactiveforces...

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

ME: Get's TLE on D :( .No worries, let's stress test by generating some random trees. Google please give me a random tree generator?
GOOGLE: Sure

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

The person who explained B's sample test cases

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

How to solve E? I think the soln is something like, do individual blocks on k, for last (n % k), if (n % k) is:

  • 1 — then no answer exists
  • any even number — 2 more queries
  • 3 — 3 more queries
  • any odd number more than 3, remove 3 elements in 3 queries and remaining even in 2.

Is this roughly along the correct lines?

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

    You can think that you have n columns and in one operation you add +1 to exactly k of them. You need to obtain odd sum in each column.

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

    How can you go for 11 4? I couldn't get this.

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

      if n % k is odd and k is even, the answer wouldn't exist.

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

        Thanks, then why the hell my solution is failing. Btw this is the only case where answer ceases to exist, right?

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

          Not sure about when n % k is odd and k is also odd. How are you solving this?

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

            Just make a move on first $$$n - n \% k$$$ elements and last n % k elements and this is same as k -> odd and n % k -> even.

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

              you might save some moves by saving up n-(n%k) indices by repeating them in previous queries. like

              n=13, k=5

              q1 : 1 2 3 4 13

              q2 : 5 6 7 8 13

              q3 : 9 10 11 12 13

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

                Yup I know and implemented this too, the above move needs to be done when n/k == 1.

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

    Answer doesn't exist only when k has more powers of 2 than n I think.

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

    That's part of it, but note that it's not always optimal to do $$$\lfloor n / k\rfloor$$$ blocks, sometimes you might want to do more or less. When I say more, I mean you can wrap around and cover an index twice. As an example, the optimal strategy for $$$n = 10, k = 7$$$ might look like this:

    ? 1 2 3 4 5 6 7      
    ? 8 9 10 1 2 3 4     
    ? 1 2 10 9 8 7 6     
    ? 3 4 10 9 8 7 6
    

    EDIT: After reading other comments it seems I did E in a very jank way, I did some strange bullshit with blocks of size $$$k$$$ that passed pretests so pray no FST.

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

    Make a graph with N + 1 nodes.

    Node i represents a state where i indices are used odd number of times.

    Here Node 0 is our starting point, and Node N is our desired end goal.

    Make an undirected edge from i to j, if you can perform an operation move from state i to state j. (can be bruted).

    Answer is shortest_path(0, N).

    Since we can move from one state to another state easily (again, brute), we get the answer after knowing the shortest path.

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

      Edit: Ignore

      Could you elaborate on how the number of edges can be bruted? Can't the degree of each node be upto O(k)?

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

        For a state i, brute the number of ones being converted to zeroes. (zeroes_to_ones + ones_to_zeroes = K).

        This way, you get all neighbours of i in O(k).

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

          Sorry I just realized my question was utter nonsense. I was asking how this didn't become $$$O(n ^ 2)$$$ even though degree could be upto $$$O(k)$$$ per node. I forgot $$$n \leq 500$$$ in the problem.

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

    If n%k equals 1 and k is odd, then answer exist. For example, for n = 6, k = 5:
    1 2 3 4 5
    1 2 3 4 6
    1 2 3 5 6
    1 2 4 5 6
    1 3 4 5 6
    2 3 4 5 6

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

    Using bfs from the final state and keeping count of number of positions used odd number of times will suffice

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

Today I got one of the best feeling that is solution D got accepted in last minute.

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

what was pretest 3 of E?

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

Thanks for including some easy problems for amateurs like me. :)

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

https://codeforces.com/contest/1534/submission/119394653 — This same case passes in my machine in 2 queries, i tried multiple other cases too. But CF says here it took more than 2 queries. Did i miss something here?

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

D problem... Killed more dreams than Fear every will ... :(

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

Solved F1 two minutes before the contests ends, what an exciting contest for me.

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

Can someone tell me, Why I'm getting ILE in Div2D ?
SUBMISSION.
I mean, I literally tried every combination of printf and endl. But couldn't get it worked. I usually use endl as a flusher but here it's not working.

  • »
    »
    3 дня назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    vi query(int r) {
        // cout << "! " << r << '\n';
        printf("! %d\n", r);
    

    The query format differs from what you print here.

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

+0 delta GG.

Should have not given the contest in the first place :(

Screenshot-290

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

I feel the problem statements could have been clearer/presented better, especially those with large statements.

At first glance, I saw "It can be proven that that if it is possible to recover the XOR sum under the given constraints, it can be done in at most 500 queries. That is, d <= 500", and went to write a code for atmost 500 queries..

Didn't help it was an interactive problem, where, if there's a WA I don't know if it's my IO format, or my solution is actually wrong.

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

Was B anything related to finding median of array

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

    No, you just find histograms that are higher than both the neighbours and reduce them to until its height is equal to the highest of their neighbours

    Submission

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

    I solved B by finding every peak in the array (places where the height is greater than before or after), then doing operations to get that peak to the max height of its neighbors.

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

how to solve D?

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

    Every tree is bipartite graph. You can ask only about nodes in smaller part. To know if node is in smaller part u can use this fact: distance between nodes from different parts is odd. So u just ask about first node, counting (cnt) nodes that have odd distance, and if cnt < (n+1)/2, first node is in bigger part, otherwise it is in smaller part. And then just greedy alg.

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

      can u explain these smaller/bigger parts in more detail. And how you are representing a tree as a bipartite graph. Would be appreciated

      • »
        »
        »
        »
        3 дня назад, # ^ |
          Проголосовать: нравится +4 Проголосовать: не нравится
        1. So, in bipartite graph every node belongs to one of two parts. Part that contains more nodes than other is bigger part, other part is smaller part.

        2. So, as I said if distance between two nodes is odd, nodes belongs to different parts. So, ask about first node, every node that has even distance to the first one, is in the same part with first node, otherwise, if distance is odd, it is in different part

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

    Here was my approach:

    Arbitrarily choose some node to be the root. Query that node. That gives you the rank of each node in the rooted tree. Our goal is to find the parent of each node.

    Iterate over the nodes in any order. Query each node whose parent is not yet known. We can use the result of the query along with the rank information to find that node's ancestors, siblings, and children.

    Notice that if we associate each query with the node and its parent, these pairs don't overlap. This proves that we won't exceed $$$\lceil\frac{n}{2}\rceil$$$ queries.

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

I think I missed D by printing a edge multiple times :(

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

Did anybody find todays problems had more casework to do or is it just me.

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

The only time I am in top 500 is during system testing (T_T)

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

How to solve B?I had some proof that decreasing a number to the maximum of two sides will work but got a wrong answer on pretest 2

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

    you only need to decrease a number if it is greater than both its adjacent element.

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

      I did so but still a wrong answer.

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

        Cut the blocks which are larger than both left and right ones.

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

        shouldn't you set mx = 0 at the very start? Cause it's particularly given that we can't go lower than 0 and also it can be proved that there's no benefit of doing that as well.

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

        I think this is becoz , u have not dealt with n=1 separately for input 1 1 2

        the answer should be 2

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

    Erase a block off of a histogram if it is strictly higher than the previous histogram and the one after it. If you do so, you will pay $1 for each erased block and decrease ugliness by 2.

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

    Make sure you only do this on bars that are strictly higher than both of its adjacent bars. Also be careful with the left and right end bars as they only have one adjacent bar.

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

      I take care of both this situations but it still doesn't work.Can you take a look at my submission if you have time?

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

    Handle n=1 case separately. For n=1,ans will be arr[0]

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

    Suppose we have our original array orig and and our new array arr. We want to minimize:

    $$$\sum |orig[i] - arr[i]| + \sum_{} |arr[i] - arr[i - 1]|$$$

    So.. if we update $$$orig[i]$$$ to some $$$arr[i]$$$, we need to make sure that it is going to decrease

    $$$|arr[i] - arr[i - 1]| + |arr[i + 1] - arr[i]| + |orig[i] - arr[i]|$$$

    as compared to

    $$$|orig[i] - orig[i - 1]| + |orig[i + 1] - orig[i]|.$$$

    And from here, you can formally prove that its optimal to update a value iff it forms a mountain.

    And this makes some intuitive sense too: obviously, updating a valley is a bad idea. And if we update something that is neither a valley nor a mountain, then its pretty pointless and suboptimal.

    Also case when $$$n = 1$$$ needs some special case (or at least, my implementation needed special care).

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

      Padding the array with one extra 0 element in the beginning and one extra 0 element in the end removes the need to handle special cases.

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

how to solve problem C ?

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

    count the number of cycles formed from $$$a,b$$$ and then $$$answer = 2^{#cycles}$$$

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

    2^(number of connected component)

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

    Notice that when you swap a pair, you have to swap some more pairs to make the configuration solved. If you swap ai with bi, you have to see where bi is present in a[]. Keep on swapping such pairs until you get ai in b[]. All these pairs form a cycle together which says that if you swap any one of these, you have to swap all of these to keep the configuration solved. There are only 2 states possible for a cycle, straight or upside-down. Count the number of cycles and print 2^cycles.

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

    Try to inverse some column, u will notice that now there is same number in first row, then try to inverse it, and repeat it until it has solved configuration. Every column than u have visited belongs to one cycle. Every cycle is independent from other cycles. Every cycle have 2 states. So answer is just 2^(amount of cycles)

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

    In C, the columns build components. That is, if you swap one column, you also have to swap another one, then another one and so on, until a circle is complete.

    Find the number of such circles, and ans=2^number since foreach circle we can swap it, or not swap it.

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

    Construct a direct graph with edges from $$$a_i\ ->\ b_i$$$

    $$$answer\ =\ 2^{number\ of\ cycles\ in\ the\ graph}$$$

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

    u have to find the number of connected components. this is because u cannot flip all the columns independently, for instance if some columns are (2,3) (3,4) (4,2) , they all are dependent on each other therefore , if u flip (2,3) u must flip all the pairs of columns that have a common element (here (2,3) (3,4) (4,2) ) So , find total number of connected components (here one of them is 2-3-4) and return 2 raised to the power this number.(as all of them will have 2 ways independently)

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

    C gave me deja vu for this problem: 1465C - Peaceful Rooks

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

What was pretest 3 in problem D? I failed it 7 times!

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

How to do D? I was trying to start with 1. then I divided all numbers according to their distance from 1. now i would go and choose from nodes at distance i,i+1 and which ever are lesser in number i would iterate over them and print them and find out their neighbours in upper/lower distance level and increment i by 2. this ensures that every time i choose half or less than half elements every time. Hence in total i never print more than n/2+1 elements

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

Why is the code of other people not visible

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

https://codeforces.com/blog/entry/91617?#comment-803516 YAY I was right. All Tourist fans owe me a buck xD. Congrats Benq

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

119382434 Can someone please tell me why I'm getting runtime error on this?

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

Anyone tried randomization in D and got it accepted?

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

When Ninjaclasher forces you to do a problem with your own name in it

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

How to solve B with ternary search?

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

Thank you for the round! The problems were interesting.

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

why G was so big constraint? My O(NlogN) solution get TLE (TT)

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

Hey Guys Do you know how can i see the delta points columns in the contest ?

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

Does anyone know why I can't view other people's submissions? Apologies if the reason was mentioned somewhere already and I missed it.

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

finally the rating loosing streak is back. So excited to have more negative deltas. Wish me luck.

Thanks for this round and making me feel how dumb I am.

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

It's too sad to see system test get failed, poor pretest hurts more than Wa

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

Apparently many people solved $$$E$$$ with some casework. You can do also like: (which I think is intended solution).

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

Big ups to the authors for the nice problems, and bigger ups for including the answers to the possible sample queries in the interactive problems where it's reasonable. That's such a nice thing to do <3

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

i could't submit D even after solving it cuz even though i saw a sample problem of interactive problem i could not submit it without idleness, please hack my account and put me out of my missery , basically i am under water its too much raining

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

will the number of cycles and number of connected components be equal in C?

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

Is there a way to see how many people failed system test for a particular problem ?

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

    They will never show that as people will backfire for weak pretests. Although this contest had strong pretests. No one on my friend list got FST.

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

      I found a way, just go to the status bar and check all rejected submissions keeping the tests greater than the number of pretests.

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

What if i tell you, that in problem A you just need to check whether given matrix satisfies:

RWRWRW                   
WRWRWR        
RWRWRW 
WRWRWR

or

WRWRWR
RWRWRW
WRWRWR
RWRWRW
WRWRWR

Realized this in post-contest discussion with my friend.

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

Finally Tutorials are here. I was thinking of finally offering some goat to the devil. Thanks to problem setters for fast update.

PS: BEFORE YOU COMPLAIN NO TUTORIAL TO BE SEEN IN THE BLOG. TRY TO FIND IT FIRST

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

Fst on D coming :(

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

Now it's time to wonder if I got a great place thanks to competing drunk or despite competing drunk.

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

https://codeforces.com/contest/1534/submission/119394653

Can somebody try this out on their machine. I submitted this in contest and it gave WA on pretest-1 and i tried it on my machine multiple times and it worked well. I'm really frustrated as I don't understand how the same code in 2 machines can give different output (my strategy isn't random, the program will always query the same nodes for a particular tree everytime it runs).

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

    When your local submissions behave differently from codeforces submissions, it often indicates that your code may have undefined behavior. In your case, I think you are trying to access an element out of bounds of the done array: see 119406377 where the assertions I added fail. I think it is due to the line fire2.pb(mp(x,b+1));, where b can be up to n-1

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

      Thankyou so much for taking out the time to look into this and getting back to regarding the issue. I definitely learnt something new today. I understand why this happened now. Have a nice day :)

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

Thanks for the great problems and strong pretests!

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

Looks like highest rating record on codeforces is going to be broken.

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

Two questions:

F: Does anybody remember a similar situation when solving a small version and then trying to upgrade it was a mistake? Normally it's rather a good way, but there the small version required only SCC while the big one doesn't (which may lead you to really long code).

H: Isn't an interaction with $$$10^5$$$ flushes rather slow/dangerous/generally not CF-friendly?

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

    I finally found a problem with a good upgrade in this F. Not like F1 has an interesting idea, just a straightforward "build graph, do SCC", where the main point of failure is building the graph in a wrong way, but there's an element of double checking — if F1 passes, you can expand on it to solve F2, while if your SCC is wrong and pretests for F1 don't catch it, then pretests for F2 might because it's way more than SCC!

    There's a good reason to go for SCC in F2 even if you don't have F1. As soon as you have it abstracted as a directed graph, compressing to a DAG gives you plenty of guarantees for the next step — actually figuring out the solution. It's not hard to write either, just reproduce those 20 lines of Tarjan from whichever online resource you want.

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

      Well, I took my code to F2, erased the whole thing with SCC, did some obvious stuff and it worked, so I don’t find SCC useful here at all.

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

        Well, I used SCC and didn't have to erase and rewrite, so I think it was a good path to take.

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

          What’s your solution then?

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

            Mark vertices that you need to cover, make scc, mark respective vertices in scc, unmark those that are reachable from another marked.

            Now you have set of marked vertices none of which is reachable from the other.

            I claim that you can sort them in some order that any source in SCC will cover segment of marked vertices, just sort them by column id of any marked representative in scc vertices.

            Now you have to figure out minimum and maximum reachable marked vertex from each source and cover array with minimum number of segments, which can be done greedily without actually finding segments: take first unmarked vertex, go through back edges and mark every node as visited, from each marked node go down and mark all nodes as visited as well. You will reach all sources that cover first marked vertex, which is precisely what greedy on array does. Then take next marked unvisited vertex and so on.

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

            First, rephrase the whole thing as: you've got a directed graph where some vertices are marked (the $$$a_i$$$-th sand in $$$i$$$-th column), find the smallest set of vertices such that each marked vertex is reachable from at least one chosen vertex.

            I compress to DAG, note that only topmost components should be chosen, then note that from the way the graph is constructed, no two topmost components can share a column, so they're easy to sort. Also, paths in the graph are actual paths in the grid, so the set of topmost components from which a given vertex/component can be reached is a contiguous interval.

            With a simple graph traversal, for each component, I find the leftmost and rightmost of the top components which are above it (minimum and maximum of their numbers in sorted order) and the problem reduces to picking the smallest number of points that cover all given intervals, which is well-known.

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

    I thought there should be a natural extension in F. So I continued with the SCC formulation and reduced it to finding a minimum size set of vertices in a DAG such that every leaf is reachable from some vertex in the chosen set. Then I tried to solve it with some (wrong) flow models. Does anyone know if this problem admits a good solution in general?

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

119382434 Can someone tell me why I'm getting runtime error?

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

    In practice mode (i.e. after the contest), runtime errors on codeforces can be caught by the C++ diagnostics compiler automatically. I resubmitted and it shows that your char arrays a and c are too small: 119406134

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

      Thanks for the information. Is there any way to overcome this error?

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

        Make the arrays bigger, e.g. char a[n+1][m+1], c[n+1][m+1]. Alternatively, use 0-based indexing in the rest of your code.

        An array int a[50] only has valid positions a[0], a[1], ..., a[49].