blobugh's blog

By blobugh, 4 years ago, In English

Hello Codeforces!

We invite you to Codeforces Round 821 (Div. 2) starting on Sep/19/2022 17:35 (Moscow time). The round is rated for users whose rating is lower than 2100.

All problems were mainly created and prepared by me. One problem is revised by mejiamejia. I would also like to thank:

You will be given 5 problems with one subtask and 2 hours to solve them. The score distribution will be announced closer to the start of the round.

Good luck, and have fun!

UPD1: Score distribution is 50010001500 — ( 1500 + 750 ) — 2750.

UPD2: System testing has been finished. Congratulations to the winners!

Out of competition

  1. Geothermal
  2. SSRS_
  3. tabr
  4. jiangly
  5. tute7627
  6. m_99
  7. kotatsugame
  8. Ethan_Rao
  9. maspy
  10. smax

Official participants

  1. LikeStrangers
  2. i_will_be_less_than_blue
  3. tlvvpdus
  4. PokerCareer
  5. casual11
  6. wildwolf_ptyzs
  7. MahiruShiina
  8. 963noah
  9. LovelyEther
  10. warner1129

UPD3: Editorial is published.

  • Vote: I like it
  • +404
  • Vote: I do not like it

| Write comment?
»
2 years ago, # |
  Vote: I like it +292 Vote: I do not like it

How is this post 2 years old lol

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +203 Vote: I do not like it

    If you create a blog post and save it as a draft, when you publish it, it is labeled with the creation time instead of the publish time for some reason. But it still takes a huge amount of foresight to create a blog post for a contest 2 years in the future...

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +17 Vote: I do not like it

    Does it mean, I have to wait approximately half year more for my contest?)

»
2 years ago, # |
Rev. 2   Vote: I like it +125 Vote: I do not like it

2 years ago ◔_◔

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +28 Vote: I do not like it

    It might have been a clone of this announcement before it got edited and published, since it is also a contest prepared by the same author two years ago.

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it -18 Vote: I do not like it

      That's not how that works. Check SecondThread's comment above

»
2 years ago, # |
  Vote: I like it +60 Vote: I do not like it

2 years ago!!

LOL!

»
2 years ago, # |
  Vote: I like it +97 Vote: I do not like it

Imagine getting a necroposting warning for commenting on a future contest

  • »
    »
    2 years ago, # ^ |
    Rev. 2   Vote: I like it +24 Vote: I do not like it

    "This post was published a long time ago. Please refrain from commenting unless you have a really reasonable cause to leave a comment. Necroposting is discouraged by the community." The reasonable cause is that the contest is starting in 4h :)

»
2 years ago, # |
  Vote: I like it +51 Vote: I do not like it

This must be a long-term project of creating a VERY VERY HIGH-CLASS Contest.

»
2 years ago, # |
Rev. 2   Vote: I like it +118 Vote: I do not like it

Imagine waiting 2 years for a score distribution

»
2 years ago, # |
  Vote: I like it +41 Vote: I do not like it

Imagine preparing a blog and waiting 2 years on round queue to publish the blog

»
2 years ago, # |
  Vote: I like it +31 Vote: I do not like it

Hello, please put more contests on weekends thanks

»
2 years ago, # |
Rev. 2   Vote: I like it +113 Vote: I do not like it

Writes blog . . .

pic

Gets published

»
2 years ago, # |
  Vote: I like it +11 Vote: I do not like it

wow, what a scheduled site :) They have prepared times of contests since more than tow years ago!

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

wow 2 years ago

»
2 years ago, # |
  Vote: I like it +9 Vote: I do not like it

Finally getting a canon episode after 2 years of fillers :)

»
2 years ago, # |
  Vote: I like it +19 Vote: I do not like it

King Arpa orz

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

2 years ago ? amazing!!!

»
2 years ago, # |
  Vote: I like it +9 Vote: I do not like it

This is what called " time travel to 2020 " .

»
2 years ago, # |
  Vote: I like it +5 Vote: I do not like it

2 years ago ? it is ez to flash to see a scoring distribution >

»
2 years ago, # |
  Vote: I like it +43 Vote: I do not like it

When you use internet explorer to make a contest:

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

i like how just 2 of the testers are actually in div2

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +10 Vote: I do not like it

    More of them were probably Div2 when they tested but their rankings have gone up in 2 years..

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I feel the same way, maybe I should invite some testers with lower ratings.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    but the difficulty balance/overall was amazing for div2 round nonetheless, thanks!

»
2 years ago, # |
  Vote: I like it +17 Vote: I do not like it

Eager to participate in a contest which was ideated before I even started Competitive Programming!

»
2 years ago, # |
  Vote: I like it -52 Vote: I do not like it

»
2 years ago, # |
Rev. 2   Vote: I like it +79 Vote: I do not like it

Blog owner waiting

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I wonder if this round will be more difficult

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

The round drafted to years ago! Wow!

»
2 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Blog should also contain:

Thanks to blobugh for coming up with the idea to use the drafted blog.

Really a nice idea, I think almost 50+comments will be just on this (at the end of contest).

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Imagine creating a blog in corona period and posting it two years later when it's finally over...

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

2 years ago I have only 0 ratings lol

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I created a blog too in case i become master and prepare a contest :)

»
2 years ago, # |
  Vote: I like it +13 Vote: I do not like it

OP’s first contest was held on 8/21 two years ago This blog was created two years ago and the Round is 821

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +24 Vote: I do not like it

    I didn't notice that until I see this comment

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Time to upsolve everything from 2 years ago...

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I think pset might be harder than as usual div.2 :(

»
2 years ago, # |
  Vote: I like it +11 Vote: I do not like it

In the spirit of blobugh, I too have created a draft for a future round:

https://mirror.codeforces.com/blog/entry/107056

See you all in 2 years for Round #999

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

2 years ago lol?

»
2 years ago, # |
  Vote: I like it +3 Vote: I do not like it

when will there be a weekend round T_T

»
2 years ago, # |
  Vote: I like it +3 Vote: I do not like it

I hope this everyone can achieve good results, and I hope I can also break through

»
2 years ago, # |
  Vote: I like it +20 Vote: I do not like it

Jokes aside, I can think of two plausible explanations for the 2-year-old timestamp:

  1. It really did take that long to actually finalize the contest, possibly because people got busy or unavailable, or there was a lot of back-and-forth about the problems, etc. Observe that blobugh was not involved in problemsetting since August 2021, so they may have been preparing this contest across two years.

  2. blobugh started writing a blog entry two years ago (which may have been completely unrelated to any contest announcement) and then abandoned it for some reason. Two years pass, and they now decided to host a contest, realized that they had a draft from back then, and figured it would be amusing to edit that ancient draft to reflect this new contest, in order to see how people would react to the apparent age of the posting.

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

I hope I'm the Candidate Master this time. Come on!

»
2 years ago, # |
  Vote: I like it +2 Vote: I do not like it

Though I don't participate because the next day is one of my most important event at my school...

But two years for participating, waiting, and then publishing.

I have a huge respect for all the people who built this contest!

Hope everyone luck!

»
2 years ago, # |
  Vote: I like it +9 Vote: I do not like it

When will the score distribution be announced?

»
2 years ago, # |
  Vote: I like it -18 Vote: I do not like it

Codeforces Language Picker -- chrome extension to fix codeforces language picker.

»
2 years ago, # |
  Vote: I like it +9 Vote: I do not like it

The score distribution will be announced closer to the start of the round.

So, we have to wait 2 years for score distribution.

»
2 years ago, # |
  Vote: I like it +7 Vote: I do not like it

I hope I reach Expert today

»
2 years ago, # |
  Vote: I like it +4 Vote: I do not like it

What about "The score distribution will be announced closer to the start of the round."??

»
2 years ago, # |
  Vote: I like it +2 Vote: I do not like it

blobugh may be author forgot to update score distribution. It's 3 minutes left to start contest.

»
2 years ago, # |
Rev. 3   Vote: I like it +19 Vote: I do not like it

How many problems can you solve/submit in one minute in a contest ?

tourist : yes

(tourist orz)

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

It's a nice contest , because I think each promblem is of the almost right difficulty .

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

How to solve D2?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +12 Vote: I do not like it

    Yes, i also wanna know. I think it is some dp that i'm just too stupid for. My greedy doesn't worked out

    • »
      »
      »
      2 years ago, # ^ |
      Rev. 2   Vote: I like it +3 Vote: I do not like it

      dp solution idea:

      create array pos of indexes of points we need to change

      it's easy to see that we only want to change the neighbors in our array using the x operation several times

      dp from left to right, 2 values — cost if used X for points i and i — 1 and if not used. Points modified with x add (pos[i] — pos[i — 1]) * x, other add y / 2 for each

      • »
        »
        »
        »
        2 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Nice solution, thanks for helping out

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Was this contest relatively easy compared to other div2 contests or I just had a lucky day?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +12 Vote: I do not like it

    I think it's easier. but obviously, the problems were interesting with perfect difficulty.

»
2 years ago, # |
  Vote: I like it +9 Vote: I do not like it

Well-balanced contest, thanks for authoring it, loved problems <3

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

After one day's work, I am too dumb to code...

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

how to do C?i could not think of any idea.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    let the first element of array has parity p . now check for the last element whose parity is p (let its position be j) .now for all 'i' from 1 to j-1 elements whose parity of element is p, apply one operation on i and j since both has same parity arr[i]+arr[j] will definitely be even i.e a[i]=a[j]

    now for all i from 2 to n whose parity is not equal to p apply one operation on 1 and i since arr[1] and arr[i] are of different parity their sum will be odd i.e arr[i]=arr[1]

    after this every element in array becomes equal.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

How to solve C?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I can describe my algo:

    1. Check weather first element even or not

    (if it is even)

    1. Find last occurrence of even element

    2. Now go through the whole array from left to right and if we meet even number do (i, lastEvenInd) to make them equal. If we meet odd number do (1, i) to make it equal to the first element

    Pretty the same if first one is odd, but all "odd" replaced with "even" and vice versa

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it +30 Vote: I do not like it

      Just do $$$l=1, r=n$$$ as first operation, then you can make all other elements equal to the border ones. Saves you the analysis by cases.

      • »
        »
        »
        »
        2 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Yep, you're right. Thanks for advise

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +11 Vote: I do not like it

    Make a[1] and a[n] equal. For i = 2 to n — 1, if a[i] + a[1] is odd, then the operation is (1,i), otherwise (i,n). After this we can achieve an array with the same number using n — 1 operations.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Very nice problems!I have really enjoyed C!Congratulations to authors!

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    How to do that C?

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      If first value is even, change all evens to last even, then change all odds to the first even (which is now equal to the last even).

      Similarly, if first value is odd, change all odds to last odd, then change all evens to the first odd (which is now equal to the last odd).

      In both cases, all values become equal.

»
2 years ago, # |
  Vote: I like it +26 Vote: I do not like it

E is the most ingenious task I have ever seen.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

https://mirror.codeforces.com/contest/1733/submission/172736981 can somebody help me to find a stress test for my solution for c

  • »
    »
    2 years ago, # ^ |
    Rev. 2   Vote: I like it +6 Vote: I do not like it

    test case:

    Spoiler

    your answer :

    Spoiler

    5 > 4

    Here is an answer:

    Spoiler
»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Is there any chance of FST today? :3

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

In D1, what would be answer for the following test case

Test case

6 right?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +11 Vote: I do not like it

    in D1,5 <= n <= 3000

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    n will be greater than 4

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    min array length is 5

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it +4 Vote: I do not like it

      You guys just saved me from a heart attack, thanks god

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Not valid, since $$$n \geq 5$$$. I was worried about this case too, but they always made sure it's possible to deal with a consecutive mismatch through two $$$y$$$-swaps.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    It's an invalid test case.

    N>=5, Mentioned in the constraints.

  • »
    »
    2 years ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    Thanks for pointing that out! I totally missed this case. (So if not for the restriction on $$$N$$$ I would have failed probably pretest but for sure system test. Note: Always think about small cases! The only special case I thought about was with $$$N=2$$$, which would have needed a seperate consideration too.)

»
2 years ago, # |
  Vote: I like it +63 Vote: I do not like it

I feel like D2 should not have been worth only half of D1, since the additional work required for D2 that isn't covered by D1 is significantly tougher than D1 by itself, in my opinion. Like, I understand the argument that D2 by itself is worth 2250, but I think the distribution should've favored D2 more, to something like (1000 + 1250) instead, which would also suggest that D1 is easier than C (which, imo, is the case, if only because it's easy to get confused in C by the two scenarios, whereas D1 is very straightforward).

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

how to solve B and C?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    B: One of $$$x$$$ or $$$y$$$ must be 0, because the loser of the first round wins 0. WLOG let $$$x$$$ be the non-zero value. Then everyone who won at least once would win exactly $$$x$$$ times, so $$$n - 1$$$ must be divisible by $$$x$$$. Now it's easy to make somebody win $$$x$$$ times and then let the next challenger be the winner for $$$x$$$ rounds and so on (it's simpler if 2 wins at first, so the winners are all gonna have IDs of the form $$$2 + ix$$$).

    C: If the first value is even, then apply the operation on each even with the last even, to make all evens equal to the last even. Then apply the operation on each odd with the very first value (even) to make all odds equal to the first even (which is now equal to all other evens). Similarly, if the first value is odd, then apply the operation on each odd with the last odd, to make all odds equal to last odd. Then apply the operation on each even with the very first value (odd) to make all evens equal to the first odd (which is now equal to all other odds).

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

A great contest and 200+ rating increment :) Problem D2 is really nice Thanks !

»
2 years ago, # |
  Vote: I like it +35 Vote: I do not like it

You changed the constraints of D2 after the contest started and didn't even bother to make an announcement? I opened the “complete problemset” at the beginning of the contest. Got so many runtime error because of this. This is pathetic.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Sorry for that. The constraint changed just before the contest start, and it seems to have taken some time to reflect on the problem page.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

imo, today contest is a lot of casework. It's not very interesting.

»
2 years ago, # |
  Vote: I like it +31 Vote: I do not like it

Problem E is similar to JOI 2009 Finals Problem 4. Also Problem D2 can be solved in $$$O(n)$$$ time

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +18 Vote: I do not like it

    Can you explain your O(N) approach?

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it +8 Vote: I do not like it

      What's a non-O(n) approach? I couldn't think of one except an O(n) algorithm.

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it +42 Vote: I do not like it

      I used a simple DP whose size is equal to the number of mismatched positions. $$$dp[i]$$$ is the optimal way to pair up the first $$$i$$$ mismatches, except if $$$i$$$ is odd, in which case, one element is left unpaired. The array $$$mis[]$$$ stores the mismatched indices.

      For even $$$i$$$ (nothing should be unpaired),

      $$$dp[i] = \min (dp[i - 2] + (mis[i] - mis[i - 1])x, dp[i - 1] + y)$$$

      For odd $$$i$$$ (one element unpaired),

      $$$dp[i] = \min (dp[i - 2] + (mis[i] - mis[i - 1])x, dp[i - 1])$$$

      • »
        »
        »
        »
        2 years ago, # ^ |
        Rev. 2   Vote: I like it 0 Vote: I do not like it

        This can be made even simpler by not separating into an even and odd case and changing the recurrence to $$$dp[i] = min(dp[i - 2] + (mis[i] - mis[i - 1])x, dp[i - 1] + y/2)$$$ and setting $$$dp[1] = y/2$$$.

      • »
        »
        »
        »
        2 years ago, # ^ |
        Rev. 2   Vote: I like it +4 Vote: I do not like it

        Hello. For even i, in the second part of the min function, how can you assume that the unpaired index in dp[i-1] is not i-1? Because if it is i-1, you cannot pair it with i with y cost. Thanks.

        • »
          »
          »
          »
          »
          2 years ago, # ^ |
            Vote: I like it +4 Vote: I do not like it

          I only use the DP for the case of $$$x < y$$$ (D1 has a trivial algorithm that can be copied for $$$x \geq y$$$ in D2). If $$$dp[i - 1]$$$ has the last element as unpaired, then the minimum of the two considered values will always be $$$dp[i - 2] + (mis[i] - mis[i - 1])x$$$. Therefore, the $$$dp$$$ array will never store a value that corresponds to spending $$$y$$$ cost for an adjacent pair.

      • »
        »
        »
        »
        2 years ago, # ^ |
        Rev. 2   Vote: I like it 0 Vote: I do not like it

        The cost of the operation is x, if mis[i-1] + 1 == mis[i]. Can you please explain, why you are multiplying x with the position difference. Why (mis[i] - mis[i-1]) * x ? Thanks

        • »
          »
          »
          »
          »
          2 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Let's say there is a mismatch at index $$$p$$$ and the next mismatch is at index $$$q$$$. One way to flip both of these is to apply the operation on $$$(p, p + 1)$$$, then on $$$(p + 1, p + 2)$$$, then $$$(p + 2, p + 3), \ldots, (q - 2, q - 1), (q - 1, q)$$$. This will flip index $$$p$$$ and $$$q$$$ as desired, while indices in between (if any) will flip twice and will therefore be unchanged. There are $$$q - p$$$ operations being performed here, each with a cost of $$$x$$$, so the total cost of this approach is $$$(q - p)x$$$.

          It is easy to observe that if any $$$x$$$-operation is to be performed at all, an optimal solution would apply it to some mismatched index chained to the next mismatched index as described above. Therefore, the DP only considers whether the latest mismatched index should be restored through an $$$x$$$-operation chain from the previous mismatched index or not, choosing the minimum of the two options.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

anyone else totally misread A without the second mod k? just me being uniquely bad at reading problem statements... again? oh.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +19 Vote: I do not like it

    My misreading was more severe. I thought the operation was a[i] = a[i] % k, a[j] = a[j] % k and then swap a[i], a[j]. I have no idea how I could read like that.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    misread C and didnt note m had to be less than n and wasted 30 mins coming up with a soln then realized after seeing pretest 1 fail and got correct soln 10 mins after contest ;)

    i should really get better at reading in contest nerves

»
2 years ago, # |
  Vote: I like it +7 Vote: I do not like it

Solved 3 and one partial problem on Div.2 for the first time. Maybe the problems were a bit easier than usual Div.2.

»
2 years ago, # |
Rev. 3   Vote: I like it -10 Vote: I do not like it

is D2 just D1 with x >= y, and if x < y then we:

get all the indices with different value of a[i] and b[i] clearly we can only make flip the bit pairwise. So the number of differences must be even. lets go from right most index to left most, If the gap (i — j) is D, then cost is D*x, but cost is capped at y. It's clear that it's always best to greedy starting from the right most index.

Just greedy imo solved in O(n) time. Idk what's the n^2 solution is given the max input is only 5k

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    then why did my approach — 172725963 — get a WA2? what cases did I miss?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +16 Vote: I do not like it

    I think that this does not work in this case:

    Test
  • »
    »
    2 years ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    This is not correct. It is not necessary that you always match consecutive ones. Consider all non-matching indices to be $$$[1,3,4,7]$$$. You might match 4 with 7 and 1 with 3(cost = $$$min(y,3x) + min(y,2x)$$$). But matching 1 with 7 and 3 with 4 could be better($$$min(y,6x) + x$$$). This may happen when $$$y = 2x$$$ for example.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    This is incorrect. Imagine that the indices where a and b are different are 1, 3, 4, 7, x = 1 and y = 2. Your solution would match 4, 7 and 1, 3 for a total cost of 4. But the optimal cost is 3, from matching 3, 4 and 1, 7.

  • »
    »
    2 years ago, # ^ |
    Rev. 3   Vote: I like it +10 Vote: I do not like it

    That should not work. Do you have a submission to try and hack? X_XX_X with $$$y=3$$$ and $$$x=2$$$ should hack it.

    Edit
  • »
    »
    2 years ago, # ^ |
    Rev. 3   Vote: I like it 0 Vote: I do not like it

    Consider case:

    12 1 6

    100001100001

    000000000000

    According to you greey algo,the strategy is:

    -change the 7-th and 12-th bit costing 5;

    -change the 1-th and 6-th bit costing 5.

    The total cost is 5+5=10.

    But the optimal strategy is:

    -change the 1-th and 12-th bit costing 6;

    -change the 7-th and 6-th bit costing 1;

    The total cost is 6+1=7.

    Maybe I misunderstand you method,can you explain it?

  • »
    »
    2 years ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    Greedy doesn't work. Consider the following test-case:

    6 2 5
    101101
    000000
    

    A greedy approach would pair the first two 1s with a cost of 4, and the last two 1s with a cost of 4 as well, for a total cost of 8. However, the optimal choice would be to pair the middle two 1s for a cost of 2, and then the first 1 with the last 1 with a cost of 5, for a total cost of 7.

    If your submission was truly accepted, then it could not have followed the greedy approach that you just described (unless the pretests were really bad, but I doubt that's the case, considering how many penalties I observed in D2).

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Ok this doesn't work then. I guess it'd have to be DP.

»
2 years ago, # |
Rev. 5   Vote: I like it -18 Vote: I do not like it

Can anyone help me finding the cause of getting runtime error in problem C?

This is my submission of C

UPD:

GNU C++20 (64) giving AC but

GNU C++17 and GNU C++14 giving RE. Don't know why!!
AC Submission
RE submission
Can anyone explain?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I used GNU C++17 (64) and got Accepted.

    • »
      »
      »
      2 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      But why?!!!!

      • »
        »
        »
        »
        2 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        You have a problem in this line : ll mn=a[od[od.size()-1]],pos=od[od.size()-1]; Take this test case for example :

        1
        1
        0
        

        Here (od.size() == 0) so od[od.size() — 1] ==> is like od[-1], which is a problem in cpp, I'm not shure but I think it's a buffer overflow.

        • »
          »
          »
          »
          »
          2 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Look, there is condition
          if(a[1]%2) then do the odd part first else do the even part first.

          so there will be at least one element in the container. so its not the problem.

          in your case. even part will execute first.

          • »
            »
            »
            »
            »
            »
            2 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            sorry, you are right. actually it's this line :

            ll mn=a[ev[ev.size()-1]],pos=ev[ev.size()-1];

            for this test case :

            1
            1
            1000
            

            in this case (ev[ev.size() — 1] ==> 1000) so a[1000] will be out of boundary.

            • »
              »
              »
              »
              »
              »
              »
              2 years ago, # ^ |
                Vote: I like it 0 Vote: I do not like it

              ev[ev.size()-1)==>1 not 1000.

              • »
                »
                »
                »
                »
                »
                »
                »
                2 years ago, # ^ |
                  Vote: I like it 0 Vote: I do not like it

                ev.size() == 1

                ev.size() — 1 == 0

                ev[ev.size() — 1] ==> ev[0]

                ev[0] == 1000

                remember 1000 is even so ev == {1000}

                a[ev[0]] ==> a[1000]

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  2 years ago, # ^ |
                    Vote: I like it 0 Vote: I do not like it

                  Hey brotherman, In ev I'm storing the position of evens not the value. :3

      • »
        »
        »
        »
        2 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Ok, here is your code giving AC in GNU C++17 : 172837822

        Changes :

        for(ll i=od.size()-2;i>=0;i--) ==> for(ll i=(ll)od.size()-2;i>=0;i--)

        for(ll i=ev.size()-1;i>=0;i--) ==> for(ll i=(ll)ev.size()-1;i>=0;i--)

        for(ll i=ev.size()-2;i>=0;i--) ==> for(ll i=(ll)ev.size()-2;i>=0;i--)

        for(ll i=od.size()-1;i>=0;i--) ==> for(ll i=(ll)od.size()-1;i>=0;i--)

        od.size() is unsigned, and when you tried to subtract a bigger value it caused a problem, you can search more about that.

»
2 years ago, # |
  Vote: I like it +3 Vote: I do not like it

such a great contest! orz blobugh

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

for the second case of B,why can't make each player won x times to achieve it? just like print:2 3 4 5 6 7 8 instead of -1? qwq

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I have managed to pass D2 using a naive $$$n^3$$$ dp but checking only limited transitions. Feel free to hack this.

https://mirror.codeforces.com/contest/1733/submission/172714403

»
2 years ago, # |
  Vote: I like it +1 Vote: I do not like it

Can someone explain the recursive formula for D2?

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Can anyone explain D1 in a simple way please? Thank you...

  • »
    »
    2 years ago, # ^ |
    Rev. 2   Vote: I like it +9 Vote: I do not like it

    Count how many indices have mismatches. Each operation flips exactly two bits. If the number of mismatches is odd, then it's impossible to fix all the mismatches, so the answer is -1. Otherwise, there are two cases:

    1. The exceptional case to watch out for is when there are exactly two mismatches AND they are on adjacent bit positions. In this case, you can pair them directly for a cost of $$$x$$$, or you can pair each of them with some other distant bit position for a cost of $$$2y$$$ (note that this distant bit position flips twice, so it reverts to its original value). In this case, we output whichever of $$$x$$$ or $$$2y$$$ is smaller.

    2. In all other cases, it's always possible to resolve the mismatches using $$$y$$$ operations. If we have only two mismatches, then they're not next to each other (since that's covered by Case 1), so you can just use a $$$y$$$ operation. If there are more than two mismatches, you can divide the number of mismatches by 2, and pair indices from the first half with indices from the second half, so the paired indices are never adjacent and the cost is always $$$y$$$. Here, the answer is just (number of mismatches)/2 * y. This is always optimal because $$$x \geq y$$$.

»
2 years ago, # |
Rev. 2   Vote: I like it +7 Vote: I do not like it

Me being happy for everyone else while getting prolly -80 myself

»
2 years ago, # |
  Vote: I like it +18 Vote: I do not like it

D1 is like is it this easy, what the fuck?????

»
2 years ago, # |
  Vote: I like it +24 Vote: I do not like it

I have managed to solve problem D2 with O(N) time complexity using simple dp.

https://mirror.codeforces.com/contest/1733/submission/172742046

blobugh I think it would be better to make N up to 2e5, but anyway contest was great. Thanks for problems!

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +29 Vote: I do not like it

    Thanks for enjoying! Actually, some testers gave O(n) solution of D2 already, but we decided to accept O(n^2) solution for difficulty balance.

»
2 years ago, # |
Rev. 2   Vote: I like it +18 Vote: I do not like it

Submitted AC solution of D1 2 seconds after end of contest , sad

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

This is my first contest. In contests this comes under unrated contest but the blog post says its rated. Can anyone clarify?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    It's rated, but it takes some time for rating changes to apply, since there is system testing after the contest (which is already done for this one) and a procedure to find and remove cheaters (which can take quite a while). After that, the rating changes are applied and the contest should be moved to the rated contest list.

    There are exceptional scenarios in which a contest that is supposed to be rated becomes unrated (such as when a problemsetter unethically copies a problem directly from another source), but I don't think there were any issues for this particular contest, so it should hopefully be rated. Just be patient...

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Until the rating changings will be done it is unrated (it usually takes about 12h-16h)

»
2 years ago, # |
  Vote: I like it +7 Vote: I do not like it

OperationForces

»
2 years ago, # |
  Vote: I like it +27 Vote: I do not like it

Ratings updated preliminarily. We will remove cheaters and update the ratings again soon!

»
2 years ago, # |
  Vote: I like it +16 Vote: I do not like it

For Problem B, I observed that either player 1 will win 0 matches or player 2 will win 0 matches.

That means for a valid solution either x has to be 0 or y has to be zero.

Am I correct?

»
2 years ago, # |
  Vote: I like it +5 Vote: I do not like it

In D1 problem, I finded an bordercase.

I sended two codes and both receive Accepted. But the output for this input:

1 4 4 1 0110 0000

is different. The correct output is 3, but in the second submission the output is 4.

This special case is to n = 4, a2 != b2, a3 != b3 and x > 3y.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it +22 Vote: I do not like it

    True. But n is guaranteed to be at least 5. So you can ignore this special case.

»
2 years ago, # |
  Vote: I like it +3 Vote: I do not like it

A memorable round for me!

»
2 years ago, # |
  Vote: I like it +18 Vote: I do not like it

All Top 10 USERS are newly registered except 1-2. this is so demotivated things I have seen on CF

»
2 years ago, # |
Rev. 2   Vote: I like it -26 Vote: I do not like it

.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

How to Solve E,the last problem?

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Cyan Gang finally

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I was inspired by this question https://mirror.codeforces.com/contest/1728/problem/D ,and write the dp dp[l][r] from dp[l+2][r], dp[l][r-2],dp[l+1][r-1], but it failed. It seems be same as the dp like others, but it is sure may be wrong. my failed solution is https://mirror.codeforces.com/contest/1733/submission/172731642 , thanks for comments!

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

As an expert, i messed up in this contest :((

»
2 years ago, # |
Rev. 3   Vote: I like it +1 Vote: I do not like it

I tried solving Problem D1, but getting wrong answer on 49th entry of test case 2, Please tell me where I am wrong....Please Help. I already did 9 wrong Submissions.

ll f(ll i, string s, string s1, ll n, ll x, ll y) {
    if(s==s1) return 0;
    if(i>=n) return 1e10+7;
    if(s[i]==s1[i]) return f(i+1, s, s1, n, x, y);
    ll p=(ll)1e10+7, q=(ll)1e10+7;
    if(i+1<n) {
        string s2=s;
        s2[i]=s1[i];
        s2[i+1]=='0'?s2[i+1]='1':s2[i+1]='0';
        p=x+f(i+1, s2, s1, n, x, y);
    }
    for(int j=i+2; j<n; j++) {
        string s2=s;
        s2[i]=s1[i];
        s2[j]=='0'?s2[j]='1':s2[j]='0';
        q=min(q, y+f(i+1, s2, s1, n, x, y));
    }
    return min(p, q);
}

void solve()
{
    ll n,x,y;cin>>n>>x>>y;
    string s,s1;cin>>s>>s1;
    ll ans = f(0, s, s1, n, x, y);
    if(ans>=(ll)1e10+7) cout<<-1;
    else cout<<ans;
    cout<<ln;
}
  • »
    »
    2 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Here is a counterexample:

    5 3 1
    00011
    00000
    

    Your algorithm returns 3, but the correct answer is 2. You can simply apply the operation on indices $$$(1, 4)$$$ and then on $$$(1, 5)$$$. Index 1 flips twice, so it reverts to 0, while indices 4 and 5 each flip once and become 0. The cost is $$$2y = 2$$$, which is better than spending $$$x = 3$$$ cost on flipping $$$(4, 5)$$$ directly.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

it was good . But I miss one condition in problem D.

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Yeah same. Problems were fun though

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Please upload the editorial !!! blobugh

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

No tutorial?

»
2 years ago, # |
Rev. 5   Vote: I like it +40 Vote: I do not like it

Problem E is quite beautiful. First we note, for each slime its sum of coordinates increases by 1 each step. So each diagonal can hold only one slime per timestep. So Slimes will never combine.

Now we look at a modified game. Imagine there are $$$t-x-y$$$ slimes in $$$(0,0)$$$. We move them all at once. If there are $$$S(X,Y)$$$ slimes in $$$(X,Y)$$$, then $$$\left \lceil{S(X,Y)/2}\right \rceil $$$ will move to the right and $$$\left \lfloor{S(X,Y)/2}\right \rfloor $$$ will move down. This way in dp-style we can determine how many slimes $$$S(X,Y)$$$ will have passed through each field.

Now we start a lonely last heroic slime at $$$(0,0)$$$ and move it along the axes. It is the only one that possibly can fulfil the query (because, as we have noted, their sum of coordinates always increases by one). If $$$S(X,Y)$$$ is even, we move it to the right, because an even number of slimes passed this field so the conveyor will point to the right. If it is odd, we move the slime down. If it ever reaches $$$(x,y)$$$, then the answer is YES. Else the answer is NO.

See also here, my commented code: 172810570

Also here's a program and some snapshots to animate the state of the conveyor after each slime:

1k slimes
50k slimes
Program for Animation
»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Could you please share the editorial?

»
2 years ago, # |
  Vote: I like it -12 Vote: I do not like it

Ah, yes. Here we go again! How can we prove that we didn`t cheated if the problem was very simple and we wrote some same fucking "for"s and "if"s? Please, can you do something about it? sadly I have no suggestions.

Внимание!

Ваше решение 172700828 по задаче 1733D1 значительным образом совпадает с решениями других участников и находится в группе одинаковых решений magnuscarlsum/172691072, allcasepass2/172699857, Daqlet/172700828, ashutosht-code1845/172701732, Willcheatyou/172703661, Eccentric_9/172704862, master_codencode/172707763, 3ayzMedal/172710754, abdelrahmanlotfy317/172712290, nithinkumar7070/172713581, rank01/172713911, manojkumar1438/172714519, Peeyush556/172715164, Ssr_536/172715571, aditya_ahlawat_1309/172715592, 2001atanughosh/172716000, 2000032121/172716579, SouvikCH/172716698, VeeraVamshi/172716771, comddingg/172717409, off_campus/172717545, new_start_for_win/172717554, lohith1216/172718150, gandesaikiran8902/172718165, Krilin/172719125, padmasai1216/172719379, praneethadevulapalli/172719576, Sase/172719821, 2000031362/172719887, rishav__01/172720183, abhinavvvv131/172720486, Kal.El/172721004, poojith_mannepalli/172721475, Rai_Utkarsh/172721634, klu_2000031535/172721653, Abhyudai_Mishra_2024/172721673, Twinkle_Star29/172721976, janender0707/172722279, sriya30295/172722593, CheatPlusPlus2/172722888, s23singh/172723100, yashika_03/172723830, KL_2000031102/172724435, oko053651/172725936, officialnj26/172726410, asal.jahanshiri/172726760, abhishek_090802/172727205, Raj088/172727415, suiiiii/172727578, pera2008/172727869, MananPopat/172728011, brainsoft/172728527, NoDrop30/172728830, dharabindal123/172728942, pasyanthi/172728989, azhakim/172729176, kl_2000032077/172729267, testac2/172729273, Sultanov_I/172729734, Parthverma22/172729855, ROBOSTAR/172730887, 2000031415JayanthKrishna/172731001, MomenSh306/172731333, Omar_Khaled_Me/172731412, Mohammd_Benni/172731596, Kither/172732436, ankitkr22201/172732495, Mohd_aman000/172732598, el_2000030813/172732819, uokeynoname/172733416, klh2010030535/172733528, Pranav1903/172733534, stunner2k22/172733859, Youssef_mkdaad/172734296, harshit0077/172734836, Coding1212/172734863, Sai_Chandu/172734996, kruthik/172735039, navneetguptacse/172735437, Pavan_Yaddanapudi/172735715, g_aadesh29/172735885, VLovesD/172735998, max_d/172736062, Pinakakali/172736150, umamhesh/172736756, 2010030159/172736858, xanaxrehabclub/172737066, ahmedfereg480/172737296, Kaustubh01/172737441, klu_2000031628/172737629, CeLLxMaTTriX/172737688, anujmishra/172737884, ishivchaudhary/172738211, Levii_Ackerman/172738319. Такое совпадение является явным нарушением правил. Отметим, что непреднамеренное утечка тоже является нарушением. Например, не следует пользоваться ideone.com с настройками по умолчанию (публичным доступом к вашему коду). Если вы имеете неоспоримые доказательства, что совпадение произошло по причине использования общего источника, опубликованного до соревнования, то напишите комментарий к посту о раунде со всеми деталями. Подробнее можно прочитать по ссылке http://mirror.codeforces.com/blog/entry/8790. Такое нарушение правил может являться основанием для блокировки вашего аккаунта или других штрафных санкций. В случае повторения нарушений, ваш аккаунт может быть заблокирован.

»
2 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Regarding Similar Solution between ojasGupta/172672316, smit086/172709047. I think its mere coincidence that the codes where so similar, I havent cheated once and was only using vscode. Whereas the other person has been caught cheating multiple times. Please review.