Hello Codeforces!

On Feb/28/2021 16:35 (Moscow time) we will host Codeforces Global Round 13.

It is the first round of a 2021 series of Codeforces Global Rounds. The rounds are open and rated for everybody.

The prizes for this round:

- 30 best participants get a t-shirt.
- 20 t-shirts are randomly distributed among those with ranks between 31 and 500, inclusive.

The prizes for the 6-round series in 2021:

- In each round top-100 participants get points according to the table.
- The final result for each participant is equal to the sum of points he gets in the four rounds he placed the highest.
- The best 20 participants over all series get sweatshirts and place certificates.

Thanks to XTX, which in 2021 supported the global rounds initiative!

The problems were written and prepared by 3.141592653, Widowmaker, Ynoi, errorgorn, oolimry, star_xingchen_c, syksykCCC.

We would also like to thank:

- Great antontrygubO_o for
~~rejecting problems~~greatest coordination! - tfg, dvdg6566, cjy2003, Tlatoani, purinliang, user14767553, bensonlzl, wlzhouzhuan, maomao90, huangqr, mollnn, golions, b23v, qlf9, gamegame, Myrcella, 244mhq, Dormi, flaviu2001, Karavaiev, wh0816, kdjonty31, socho, Karry5307, dXqwq, KagamineRin, hzkmd, syh0313, Nanako, sunsiyu, zkdxl, Pecco, ODT for testing the round and
~~sticking on difficult problems~~providing valuable feedback to the problems. - froggyzhang, paulzrm, mejiamejia for giving great
~~rejected~~problems and many interesting ideas. - MikeMirzayanov for great Codeforces and Polygon platforms!
- And You, for participating! Your participation in this round will allow
~~our emperor~~Anton to reject more problems.

You will have 3 hours to solve 9 problems. We encourage you to read all the problems ~~and solve them all~~.

One of these problems is interactive, please see the guide of interactive problems if you are not familiar with it.

**UPD1:** Scoring distribution: 500-750-1000-1250-1750-2000-2250-3000-5000

**UPD2:** Tutorial published.

**UPD3:** System testing finished, congrats to the winners!

I hope our round will have less fst than the last one :D

fst?

fail system test

TT_TTBLUEXDbruh, you are rising like a phoenix.

Thank you so much, bruh :)

Me too XD

This comment didn't age so well...

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

Thanks to anton. All hail our emperor anton.

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

For having rejected problems and accepted the amazing ones!

All hail our emperor anton

All hail our emperor anton

downvoted every of you

.

All hail our emperor Anton (let's show some respect for his name)

All hail our emperor Anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton

All hail our emperor anton .

All hail our emperor Anton

.

All hail our emperor Anton

All hail our emperor anton

I guess that might be story of a question , "In the kingdom of Berland, ruled by emperor Anton "

All hail our emperor anton

All hail our emperor antontrygubO_o

Kingdoms are ruled by kings, and emperors rule empires.

All hail our emperor anton

All hail our emperor Anton for making us sheep

I am the emperor.

Please be responsible for what you say.

I don't know why everyone is saying this and I don't know who is anton? Will you explain please?

.

He is the round coordinator, and all the testers are praising him for coordinating the round so well, and we all should also because a lot of effort is put in making a single round. Hope it helps :)

Thanks for your help bro :)

All hail our emperor antonSad. Anton should be destroyed

All hail our emperor anton

XDD

XD Don't fst pls!!!1

sorry, I'm new to this. what does fst mean? thanks

I must say that this will be a great competition. Antontrygub is a very good and professional coordinator. The authors are also very good and their level is very high. It is very pleasant to work with them. The topics are very interesting, I hope most of the contestants will like them. I hope the competition can be held smoothly, and I wish every participant good luck and high rating.^__^upd: Celebrate the success of the competition! Congratulations to the participants who played well, and wish the participants who did not play good luck next time!

Respect for Antontrygub ,Due to his coordination work he cannot participate in so many rated rounds.

I hope this contest has strong test cases:D

As a tester,stay calm when you enjoying this great contest and don't throw your laptop or your keyboard at the floor XD

If you keep trying on the problem,you'll find the key and be proud of yourself!

GL and HF!

As a participant, these types of comments from testers send chills down my spine :(

As a participant, failed system test is more annoying than Wrong answer on pretest 2, so it may be situation when someone try to throw his laptop or keyboard after system test !

!Thanks for motivation, hoping for strong pretests this time ^^

Excellent problemsets! Hope you will enjoy it.

This got old soon. Recieved notification for tshirt <3

Thanks Codeforces!

same for 9th

As a tester, please give me contribution!

As a tester, I can say all problems are good and interesting. Wish that everyone will enjoy it and get high ranks.

As a tester, I would like to recommend reading all the problems. All the best!

PS: Problem quality is good :)

As a tester, please give me contribution!

wherever i see the word "interactive", i see the words "binary search" also. XD

As a participant get ready to brick!

I hope this time task C will not be difficult for me like last time)

A global round on my birthday; the best birthday present :)

Thanks to Codeforces and all the writers and testers!

I hope this round will have less FST than the last round :)

As a tester, I found some of the problems quite challenging, but they were all very interesting. Read all the problems and have 3 hours worth of fun!

Simp

sToP sTeAlInG mY cOnTrIbUtIoNs

I probably lose 2 hour trying to understand the statements.

I can't wait to participant in this game then :)

The problem writer saidSpoilerJust joking

I'm afraid it will cause panic among all participants and make problems FST easier (?)

Plz don't panic, it's not true(?

maybe examples are so strong :dicaprio:

Attention!Unusual start timeIt's only an hour earlier than regular round, isn't it?

UPD:Err... It may mean a lot in other countries... Alright.5:35 am infinitely harder than 6:35 am to wake up in west coast :(

That's unless you are too excited about the contest to fall asleep in the first place.

I tried sleeping at 10 pm yesterday but couldn't due to the hype...ended up staying awake till 3 am and dipped the contest rip.

Finally, another chance to decrease my rating

Does that mean you can think like a master?

Nah specialist is my limit but I still feel masters think like a human beings grandmasters and heigher is just unbelievable

When

grandmastersthink:<same image>

My journey towards becoming a specialist will start from this contest InShaAllah

Me too(^_^).

I wanna know how difficult this round will be.

I think it will be as difficult as a div1+div2 round

I can't tell you too many details, but you can imagine that the first two questions are about the first two questions of div2, and the last two questions are about the last two questions of div1, with increasing difficulty in the middle.(The questions are all interesting, I promise, I suggest you read all the questions)

Why is starting time different from usual contests?:-|

Because we should get up early on Monday.

Sad. Chinese schools should be destroyed.

Sad. Imakf should go to school

don't worry, end is the same

an expert or above comments "all hail our emperor anton" : gets upvotes. a specialist or below comments "all hail our emperor anton" : gets downvotes.....

ye hai aapka equality??

It's "tester or non-tester" instead of "expert or below".

Note that timing is unusual, I guess it should be mentioned

It has been mentioned in the comments above. See here

what will be the difficulty level div 1 or div 2?

Problem C in div2 round is task A in div1 round.

thanks for this round.

Hope to become cyan this time.

Hope to become red this time.

Hope to become orange this time.

Hope to become purple this time

Hope to become purple this time

Hope to become cyan this time

Hope to become cyan this time.

Hope to become cyan this time.

Hope to become blue this time.

Hope to become blue this time.

HOPE to become CYAN this time

Really looking forward for this one.

I think you may have forgotten to link the scoring table. I found this link in a previous blog post https://pastebin.com/QT5sXEaT

Thanks for your reminding. Fixed.

Hope for good rating change

Atleast one of these problems is on binary search (interactive)

Will rainboy start from the last problem today? Kind of sad for him -_-

He was able to do both the subtasks in the last problem in Global Round 12.

I'm curious why he only solved the last 3 problems in recent contests. I mean he solved F, E, D and stoped even though he had around 1 hour left.

No idea but he is definitely IGM Level. Sometimes, he completes the whole set but sometimes he stops at some problem even though he has sufficient time to continue further.

OMG! I'm feeling so inspired by seeing his contest history,he tries only the toughest problems of the the contest, doesn't care about his rating. @Foundnt_Alice thanks for letting us know that someone like him also exists in this competitive community. Salute to him!!

Ignore

It's not a fake account since he took every contest. Also, take a look at the numbers of problems he has solved

SpoilerIs Codeforces recent actions frozen?

First time to see '5000' in the score distribution

This requires solution from the moon :)

MiFaFaOvO Registered ...

A request to the problem setters. Please add accepted solutions(code) in the editorial.

what is the diffulty level of global round as compared to div2 rounds?

i think its mixed div1+div2 first 2-3 questions are quite easy ....then for the rest the difficulty increases exponentially.

not aged good....Even tourist did many wa before AC,,,,It is Div 1 only round!!!!!!!

Not as easy as normal div 2 first 3 problems!!

No fst, no fst,no fst,ples! (Like everyone has hoped.)

It is said that Globle rounds are always difficult, so I think I may perform poor in the contest.

All in all, I hope we all can have fun solving the problems, stay Cheeki Breeki:)

PS: I hope I can turn my name blue after the contest. (Although I don't think I can do it)

If I don't reach Master today I will quit rounds for at least 6 months.

Hollyshit you went super sayan mode

gg

Thanks

You owe my respect

C137 orz

Hoping for blue.

Stand by me and let's wait for the memes about tourist and problem C.

*sad newbie noises*

Problem C is bad. Even some Grandmasters and LGMs took a long time to solve it.

Why does that make it bad? I thought it was a good problem. Overall I'm really happy that the difficulty spiked up fast, and the start of the contest wasn't just about writing code to ~5 trivial problems.

I can see why this would be bad for div 2 though, but that's the thing with problem difficulty of combined rounds, you cannot really make everyone happy :/

I think it was a brilliant problem with many tricks. That's why many people got it wrong initially and then corrected it. Overall it was a superb contest with good problems.

I solved G, but failed to solve C in time lol

Even tourist took more than an hour to solve C. D and C should have been interchanged in my opinion. But you know, those who solved C would always disagree.

Yeah I think so, but since the amount of people who solved C is more than D, there should be at least 125 people who disagree XD

We can't get FST if we don't pass pre-tests ;) well played cf

pre-tests?

oops

HardForces

There should be a round like this once in a while to make us question our strength for a sec. But, anyways a lot of registrants didn't even submit knowing they'd lose their ratings.

Can anyone tell me how to solve F after the contest? I came up with many approaches but none of them worked.

Anyway, F is a beautiful problem!

Watch Errichto's stream

His stream is canceled :(

Very difficult round. Just solved 2. (Pending system tests of course)

[Im a tester, so I pre-wrote this]

I solved G through a weird method. It was motivated by the chemistry reaction mechanism known as electrophilic substitution. This reaction involves a negative atom (or number) replacing a positive one, and in so doing causing the positive one to become negative.

This allowed me to motivate a constructive algorithm that basically involved using a negative element out of place to replace the positive ones in the wrong places. It took some casework, left as an exercise.

Here's my code: https://gist.github.com/dvdg6566/fa2bbe6fd49b1109e3639ddaefb1a26c

orz, as a chemist, never before I have though something similar...

BREAKING: a monopole has been discovered.

What was D? Is there a very silly observation or guesswork that works?

U can move bit from smallest to highest and delete some bits. So, u should check that u < v and on each suffix count of bits in u >= count of bits in v

I tried to do random stuff and one of them worked.

My approach is simply iterating u and v bit by bit, from LSB to MSB. If u[i] is 1, increase a counter; if v[i] is 1, and that counter is 0, return NO.

Apparently v shouldn't be smaller than u.

Why wasn't it explicitly mentioned that there will be no obstacle in first and last column in B? I know the constraints clarified it but it still makes more sense to mention it explicitly.

Wtf :(

I found this out after a long time.

I also think this should've been mentioned. I didn't pay attention to the constraints, and thought there can be an obstacle in the first or the last column. Finding whether the start and end points are blocked by "triangles" seemed too hard to implement for B, so I moved to C.

I thought D is just no. of set bits is equal in both the nums and the LSB In u <= LSB in v and u<=v to be Yes cases and everything else as No. But WA on pretest2.

Counter Example: 15 and 16, You can get to 16 by adding a 1 to 15 and that is a valid edge in the graph

OK CF! There will come a day when I am not afraid of ya. Wait and watch.

Why brute force in C doesn't work? I just start from index 1 and make this value 1 by just doing what's stated in the problem now as not to surpass time limit I check whether i+a[i]>n or not, if it is true then I bring a[i] down to n-i so that i+a[i]<=n (add n-i in answer) and as n can be 5000 at most the complete algorithm would be $$$O(N^2)$$$ but it gave me TLE on pretest-9 can anybody help?

Here's my Submission

Edit:- Its $$$O(N^3)$$$, I got it thanks for the response.

The runtime is not N^2.

Note that a[i] can get decremented by 1 in your inner loop.

id can also get incremented by 1.

Taking overall complexity to N ^ 3

Each number can be around 10^9. Then the time complexity is not O(N2).It is actually dependent on the numbers in the array

I did the same thing only to realise that it is actually O(N^3). For each s_index you are doing O(N^2) work and ignoring the cases where s_index + index > n you will still have O(N^3) work

Your submission is $$$O(n^3)$$$

Got it, thanks for the response.

If the test is 2500 5000 followed by 2500 1 you will take O(n^3) time to compute your function, you need to speed-up your brute force (which is what I did) by storing when there is 1 the next which is not 1

All right, I got it

I generated a test case that would take $$$O(n^3)$$$

Here is the case: https://pastebin.com/0bcp1Y5x

No it is not N^2 something similar like this your code goes N^3

I am having the same problem.I Suppose this solution is not purely O(n²).

Please can anyone give some idea for C?? I am getting the wrong answer on pretest 2

For reducting a number to 1, we can either start there or get reductions from other starts to the left of the number.

Note that for we can jump from any index j, j in [1, i — 1) (i — 1 exclusive) in exactly 1 move.

ans -= No. of numbers to its left not less than i — j

From i — 1, we could jump a few excess (equalling the number of visits to that number after it got reduced to 1) . (visits[i — 1] — ar[i — 1] + 1).

Contribution from the current node will be: ar[i] — visits[i] — 1;

108735314

Thank You very much

To those who waited for my stream with solutions: it's canceled because I failed miserably today (solved ABCDE, unsure about my E). Sorry about this.

Instead, I'm going to talk about my team's solution for Google Hash Code Qualification Round.

After the Hash Code stream, I might upsolve F and G.

Solved ABCDE and "failed miserably" don't go together.

Because he is on a higher level dude.

I get it. But that's life. You don't get what you want everyday.

Yeah, Better Call Saul.

Maybe he is sad because he is red? I think, if you were red, you would be sad because of this situation

If it is called failing then those who solved A/B are killed.

F is a brainteaser, a lot of thinking and a rather simple idea.

Let's try to find the second magnet. We do that by comparing [1] to [2], [1 2] to [3], [1 2 3] to [4] and so on. If at some point we have a non-zero force, then we know that the magnet at the right side is magnetized.

Once we found it, we test it against all the magnets to the right. Also we know that there is only one magnetized magnet to the left, which we may find with a binary search.

elegant.

Wrote this during today's contest. CPP Magic.

Same. Wasted 30 min to debug this :/

The compiler will probably warn you.

I am using CLion and these mistakes are highlighted)

Unfortunately, my compiler didn't warn me.

Looks like clang will do while gcc won't

Amazing round !!

Problem C and D :|

nothing to say. just :|

C was amazing :/ graphs everywhere. heheboy.

Please can you elaborate on how you used the graphs concept in C??

What a pity for the authors that no one has solved the last problem(

looks like rainboy (the chameleon of codeforces xD) missed the grey xDxDxD.. sadForces

I did not submit anything because dislike problem statements of A,B,C.

A: It is obviously a "game" about what is largest, what smallest, and what means ordering. So all in all it is a language riddle. Formulating a word puzzle with intentionally difficult to understand text is bad style. At least do some

boldif with largest the smallest is adressed.B: "Moving one obstacle to an adjacent by edge free node..." Sorry? This sentence in a super lengthy statement that basically explains a simple thing... Again, this is intentionally bad style.

C: Why not simply explain what a "pass" is? Best with first usage of the word? Did took me like 15 minutes to get what is asked.

I guess I can sort of understand your complaints about B and C, but complaining about how "kth largest element" is ambiguous is kind of a bruh moment imo

I just don't understand why an intentionally unclear statement is used.

Problem B is so good that you have to look at the constraints to realize it is

problem B!And see how the letter u and v are used in D. Once v refers to the sum of the both input values, then v is used for the second input value. sic :/

Is it me or D was much easier than C?

For me D was much harder than C.

same here

Yeah, I also found D easier, it was a simple observation. However, it can be very annoying if you don't find it and move on to trying brute-force approaches.

I knew I could not solve C, so I invested my time in D. Unfortunately I wasn't able to make the observation you are referring to. Do you ming explaining what is it?

When you go from u->(u+v), then you are basically adding a number v to u which has bits set on positions where its set for u as well. Eg. u = 11100101 v = 10100100, 11100000, 10100001(many other v's are possible)

So first of all there were these observations: If you want to make x from y then:

1. if x<y, then its not possible

2. if the number of bits in x<y then also its not possible

3. Also if some suffix (i.e. looking from the right) of x in binary has more bits set than those in y then also it is not possible as you are trying to add a bit to an already set bit, hence you can effectively move a bit to the right or make it a zero (by grouping it with another 1).

So you just have to iteratively find the number of set bits at each position from 0-30, and then see if any position violates the 3rd observation.

PS: Its a little tough to explain it properly but I hope you got some idea!

Totally agree!

So many testers, but no one found the bug in the statement of B.

Also wouldn't solution fail (because horizontal and vertical were swapped) if it follows original statement ? I guess problem statement was made bit different after testing round.

Can anyone share their idea for E?

I didn't solved but i thought in following way : We can calculate the size of tree and if it's equal to some Fibonacci number $$$F_{n+2} = F_{n+1} + F_n$$$ then one it's sub tree must have size either $$$F_{n+1}$$$ or $$$F_n$$$ . Thus we can divide the problem into that subtree and original tree with that subtree removed.

Since Fibonacci series is exponential , i think it will take $$$nlogn$$$ or $$$n(logn)^2$$$ depending on how fast we find that subtree.

look for some edge where if we remove it we will have f (n-1) and f (n-2), and go back to working only with those subtrees recursively, just grab any edge that meets, if in any case it does not exist, answer in NO

i thought the same but what will be its complexity bound

seeing that F(28)> 2 * 10 ^ 5, each node participates in a maximum of 27 divisions (even less), and to calculate the size of each sub-tree is linear, then it would give as O (n * 27),

What if there are more than one ways to cut a tree to f(n-1) and f(n-2)?

you choose any

How to solve problem C?

24 tests in a problem with binary answer and a ton of possible heuristic/backtracking/brute force solutions?

How to solve E?

Write bruteforce in E

TLE14

Print NO and quit if the program was running more than 0.95s

???

Accepted :)

Spoiler for solution of EActually that's a "correct" answer. Every fib tree can be cut into two trees of fib-number size, so you have to cut only one side, not two. (...which I learned from editorial :(

Xtreamely weak A pretests/

Whaaaaaats wrong in this solution ?

https://codeforces.com/contest/1491/submission/108679391

cin>>

a[i+1]; if(a[i]==1) t++;:)

how is this supposed to be a global round?! just look at my submission for C

108705080

even a stupid chicken can clearly see that it will TLE. I find it strange that such retarded authors who can't even make decent pretests were allowed to create a global round.

But you can't

Couldn't you make stronger pretests? I didn't enjoy the CM yet XD

108736709 — My submission

This is exactly what I did bro,

Yes, I use the exactly same approach which is easy to write and think but with O(n^2) complexity.

Guys, I have a question, for problem B.

Why in this case does the answer give me 0 if, u = 3 and v = 4? and my answer was accepted 108747951

You only have obstacles in 1, 2, ..., 10^6 columns. Not 10^6 + 1.

Red dots cant be placed at 1e6 + 1

Thanks, my reading comprehension is bad, sorry

imo the problem should have made this more clear, it takes a lot of time to notice it

This is why i took over a hour to solve this problem because i didn't properly seen the input limit. it doesn't contain 0 or n + 1 that make this problem a lot easier. But i missed this 0 and n + 1 are not in the input range for 1 hour and when i realized that, it was just a bunch of code.

To not keep you waiting, the ratings updated preliminarily. In a few hours, I will remove cheaters and update the ratings again!

I got +117 delta change like my contribution :p

What's wrong in my solution???? https://codeforces.com/contest/1491/submission/108741793

I modify the code to store all the obstacles and get AC, but have no idea with that :((

For problem D I tried the following for v > u

But it is failing

I am unable to come up with a counter example. Please help

Here is some code to help you generate counterexamples. https://paste2.org/yYY5PV46

A few counter examples:

Fail: u = 3, v = 12: correct answer is YES, your answer is NO

Fail: u = 3, v = 20: correct answer is YES, your answer is NO

Fail: u = 3, v = 24: correct answer is YES, your answer is NO

In question B: for this tc: n = 3, u = 3, v = 5 a[0] = 2, a[1] = 1, a[2] = 4 I am thinking the output should be 3 but as per the solution the output is 0. Can anyone please help me to understand how the output is 0 for this tc ?

Thank you!!

how to solve C? it didn't get the editorial nor the comments. can someone explain it breifly?

Since you move left to right, at the beginning of any pass, the optimal solution is to start at the leftmost index such that A[i] > 1, after which that pass is entirely determined by the values of A[i]. Since simulating the entire path each time might be too slow, we need to efficiently determine the impact of this index on the indices to the right.

Each index between A[i+2] and A[min(i+A[i],N)] will be visited once from this A[i]. We store the number of times each index is visited (number_of_visits[i] = number of times we have already visited index i when we reach that iteration). If an index i is visited more times than necessary, then each additional visit will result in one more visit to index i+1 (since A[i] = 1 for each subsequent visit).

At each index, therefore, we must add max(A[i]-1-number_of_visits[i],0) to the final answer.

Obstacle can't be in first and last column in B was evident only from constraints on ai. It was not written in problem statement. Costed me B :( .

[deleted]

CODEFORCES JUDGEMENT ERRORthis is my submission of problem A in java. https://codeforces.com/contest/1491/submission/108703837

import java.util.*; public class ss { public static void main(String[]args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); int k=in.nextInt(); int c=0,d=0; int[] a=new int[n]; for(int i=0;i<n;i++) { a[i]=in.nextInt(); if(a[i]==0) c++; else d++; } for(int i=0;i<k;i++) { int l,x; l=in.nextInt(); x=in.nextInt(); if(l==2) { if(d>=x) System.out.println(1); else System.out.println(0); } else { if(a[x-1]==0) { a[x-1]=1; d++; c--; } else { a[x-1]=0; c++; d--; } }

}}

Unfortunately I have got a TLE for the same O(n) approach that got accepted in c++. I request MikeMirzayanov , star_xingchen_c and the rest of the problem setter to kindly go through this . I am greatly disapointed that judging time was not adjusted properly for java.

Consider using BufferedWriter for output

Unfortunately , my solution for E failed system test :(

But I wish I could get a T-shirt :D

My solution for E :

To find all the edges which link two parts that both size are in fib.

Try to cut the edges and dfs to find if there is a solution.

It got TLE on test 20.

The correct solution is to find one of the edges which satisfy the condition.

Great problemsets except some typo problem, hope to see this kind of great round again :)

sad... my problem E TLE on test 22, when I switch language to GNU C++17 (64), it passed in 748 ms.

Me too.

And when I submitted again with the same code and the same language,it Accepted. :(

Great unusual contest! Thanks.

Thanks for the great round!

wlzhouzhuan

zz win!

Wait, nobody is gonna talk about Pekora?

And also nobody is gonna talk about Kochiya Sanae :/

Can anyone say me, when i can find a list with winners t-shirts?

find it by yourself now

run randgen.cpp from above comment with arguments:

And it will output some numbers which are corresponding to the winners' rank.

For convenience, here is the list of t-shirt winners:

Congratulations to tshirt winners!