<almost-copy-pasted-part>

Hello! Codeforces Round #629 (Div. 3) will start at Mar/26/2020 17:35 (Moscow time). You will be offered 6 or 7 problems (or 8) with expected difficulties to compose an interesting competition for participants with ratings up to 1600. However, all of you who wish to take part and have rating 1600 or higher, can register for the round unofficially.

The round will be hosted by rules of educational rounds (extended ACM-ICPC). Thus, during the round, solutions will be judged on preliminary tests, and after the round it will be a 12-hour phase of open hacks. I tried to make strong tests — just like you will be upset if many solutions fail after the contest is over.

You will be given 6 or 7 (or 8) problems and 2 hours to solve them.

Note that **the penalty** for the wrong submission in this round (and the following Div. 3 rounds) is **10 minutes**.

Remember that only the *trusted participants of the third division* will be included in the official standings table. As it is written by link, this is a compulsory measure for combating unsporting behavior. To qualify as a *trusted participants of the third division*, you must:

- take part in at least two rated rounds (and solve at least one problem in each of them),
- do not have a point of 1900 or higher in the rating.

**Regardless of whether you are a trusted participant of the third division or not, if your rating is less than 1600, then the round will be rated for you.**

Thanks to MikeMirzayanov for the platform, help with ideas for problems and for coordination of my work. Thanks to my good friends Daria ZeroAmbition Stepanova, Mikhail pikmike Piklyaev, Maksim Ne0n25 Mescheryakov and Ivan BledDest Androsov for help in round preparation and testing the round.

Good luck!

</almost-copy-pasted-part>

Thanks to Artem Rox Plotkin and Dmitrii _overrated_ Umnov for help with testing the round!

**UPD**: Also thanks to Vitaliy kuviman Kudasov for testing the round!

**UPD2**: Editorial is published!

Is it _overrated_ XD.

We want more contest in this "Corona" era .

Thanks a lot bro.

Following

Why don't u visit ur recent contests and upsolve the easiest unsolved problems? :-)

I do brother.

But live contest has the maximum awesomeness..

You know what I mean. <3

yes. I agree brother. This is a very good way to keep busy. Happy Coding. :D

Due to

Home Quarantineregistrationwill exceed22kfor sure :)Obviously, what could be a better way to spend time ? ;)

Hope everybody uses

Face Maskand keeps distance from others likeThe Codeforces logo :)Ok, I get it. That was not funny.

Wasn't that the coronavirus?! :P

Due to unexpectedly large number of participants in the Lunchtime, our systems were unable to handle the load, and we are forced to stop the contest, which will be unrated.

We want at least 2 contests per week in this time of pendemic Corona.

Why ? be greedy ... I want at least 7 contests per weak ... (in the rest of the day Ill upsolve the contest)

It's not an easy job to prepare contests and come up with 5-7 problems.

I know ... but many contests are in queue ...

You can attempt to come up with about 12 decent problems (and with 4 hard problems that can make for Div. 1) that people will not scream "shitty mathforces/bruteforces/dataforces/etc.", write a bunch of tests, stress-test that, ask a bunch of testers to test your problems, find corner cases and stress-test again, reject 6 out of said problems, etc.. Writing a contest is NOT easy, and if you are so insistent on having a contest, how about go write yourself one? We will see the quality of your problems.

One contest per 3 days will be good for us.

CodeForces is making our Quarantine interesting by hosting regular contests...

The problem makers are also in Quarantine. So, they have more time than ever before to create more problems.

Thank God that coding does not transmit Corona infection :) Thank you very much *-)

What can be more interesting work to do in quarantine than solve some classical competitive programming questions set by vovuh and learn from our mistakes that we do in real time contest. Thanks Codeforces.

I'm still new on codeforces

Can someone explain what it means that the penalty is 10 minutes ?

In the resulting scoreboard, participants are compared first by the number of solved problems, then by the total penalty time — for every

solvedproblem, it is the time taken to solve it (in minutes) and 10 minutes for every unsuccessful submission on it.Thank you <3

Just to make it clearer: you

won'tbe penalized 10 minutes of solving time during the contest: you will have full 2 hours to solve the problems regardless of your submissions.Thank you got it

So basically if we have a WA submission it will add up 10 mins to our submission time in the scoreboard right?

We won't actually have to wait 10 mins to make a submission?

Yes, penalty of 10 minutes is added to your submission time, you don't have to wait for 10 minutes to submit. Do note that TLE is also a rejected submission and is penalised with +10 minutes.

How do I configure vim like tmwilliam in his YouTube videos? e.g:-font,keybindings,etc.I am a beginniner in vim.

Why don't you ask him? How would others know his configuration?

Please post his reply here too.

have a look at the other people's dotfiles (.vimrc to be specific) in github

Waiting for the moment when i'll be participating unofficially in these rounds :(

I found that even orginal 1500 rating is hard to reach.:(

But goals need to be bigger than our achievements.

I just wait for div3 contests :(

yeah me too.

We want more contest to pass our home quarantine time with coding.

## stayhome

## staysafe

## staywithcoding

I think that this contest may turn out to be a Codeforces Server Pressure test (CSP)!

CSP...

I got troubled to submit my solution at the last time of contest

Please make strong pretest cases!!

Contests these days are of much help to kill time.Many thanks to

Codeforces!regular contest with two days gap will be good in current situation...

I wish you all a good performance in this round.

It would be great if the contests are organised on a regular basis or atleast every alternate day, coz this is the time we need them the most.

I really love div.3 rounds

We need more of this, we ain't got nothing to do on this pandemic

we ain't got nothing to doYou could always practice previous contests...

Well There is much less thrill in doing virtual contests psychologically.

I'll 爆杀 in this contest. Hope everyone good luck!

(That's very dangerous! Keep yourself safe and don't get killed during this contest)

Please increase the number of round,s per week.These days it's difficult to spend a day without contest.``

Codeforces is Best thing to do in home quarantine.

## Stay At Home

## Keep Social Distancing.

We need more contests during self-isolation))))

can we have this website in dark mode? it will be easier on the eyes.

maybe you can try this, in case you didn't know

`go to chrome://flags and search dark in the search bar, then you can select enabled with selective inversion of everything and then relaunch the chrome`

https://codeforces.com/blog/entry/65477

Thank god. I'll finally have a break of 2:00 hrs in which I'll not regret my life which I've been doing this whole quarantine

just be an expertMaybe you are

expectedto be anexpertImprove your spelling and everyone will

expectyou to be anexpertsuch a bold statement

+18kregistrations till now, I hope our submission won't take too long to be judged.Best of luck CF servers

Effect of Corona !!

I think codeforces should restrict registrations at 25k or something.. Excess load might cause servers to remain down. A good contest for few is better than no contest at all. :/

Not for the ones who don't get to take it.

please...I want more contest in this "Corona" season. Because live contest is better solution for passing boring time

please more contests in this "corona" time live contests feels more competitive than virtual :) ;

wish you successful home quarantine...CF Registration amount proves, you are fighting against corona...

Hope it will be great as always)

OMG 20k participants!!!

Because all are home quarantine and love coding.

## stay home

## stay safe

## protect covid-19

I hope we will get the quarantine and isolation related problem.

Already 22000+. Today total registration gonna be 24k+

Stay Home. Stay Safe.

Be a Compititive Programmer.

Seeing the number of registrations, I already opened m1.codeforces.com XD

Wow!! 22000+ Registration!!!

Now Waiting for 23000+

## Corona_fact

I bet there will long submission queue !!. 23K !! Dayyyummm !!!

Has the number of participants broken the record?

YUP

_hit What was the previous record?

Last edu round had 20k+ registrations. Before that it was ~18k.

very weird problem d

It was dp, and I really liked the problem; something unique. I don't think I can explain more, since my own solution was very messy. Hope the pretests were strong.

it can be solved with greedy approach pretty easily too

Could you, please, elaborate? Because I couldn't really think of any approach, at all (just Pupil things :)) — but I am getting better). I tried DP and backtracking, but got lost in the details and couldn't implement them properly.

Ok, so we would like to assign colors in following pattern: 1 2 1 2 1 2.. We will assign same color to all segments with equal numbers in it, so for sequence like this: 3 3 3 1 1 2 4 5 5 the colors would look like this: 1 1 1 2 2 1 2 1 1. Now the only problem is that first and last element can still be different and have same color assigned to it. To fix that we take any segment of length >= 2 and change color of last element in it to to opossite one and recalculate the color array. For previous example it would look like this: 1 1 (2) 1 1 2 1 2 2. In case there is no segment of length >= 2, simply set color of last element to 3. https://codeforces.com/contest/1328/submission/74454901 — my implementation

Wow, that's actually pretty simple. I understood perfectly, thanks! :D I didn't realize that the maximum number of colors would always be three — I thought there were some cases where you'd need four or more colors (though I couldn't find any).

That's an awesome solution!

It was a very hard implementation for me at least lol. First, if there is only one kind of number in the array, answer is 1, so paint all of them as 1.

Second, if n is even, paint them in alternate colors 1,2,1,2 and it will be correct for every input.

Third was problematic, answer can be 2 or 3, depending on the number of adjacent elements which are different. If that number is even the answer is again 2, other wise its 3.

For case t=[1,2,3] we need 3 colors [1,2,3] and for t=[1,2,2,3,3] we need 2 colors [1,2,1,2,2]. So your explanation is not true.

1 2 3, if written in a circle have 3 adjacent elements that are different (1 2) (2 3) and (3 1), thus the answer is 3. Sorry for not clearing this, count includes all the adjacent elements including the first and last. Although You are right, it is wrong for other test case like 1 1 2 2 2 2 3, because it says 3 colors are required, but it can be done one 2.

Everybody is enjoying their home quarantine or lock down situation. The huge number of participants says that. right? ;)

anybody else that couldn't participate due to the heavy load on servers?

anybody else that couldn't participate due to the heavy load on servers?

Can E be solved using LCA?

I tried to do it using LCA, but my solution gave WA on test 56.

Mine gave WA on test 53.

Yes.

The observation is that all the parents of the nodes in a query has to be in the same path.

So find the parent of each node in a query and check if they are in the same path from root using LCA.

I used LCA, and passed it.

Link of your solution?

74483153 my lca solution

Almost 25K registrations! Really Coronaforces)

how to solve D?

I only consider 4 situations:

all elements are the same : (1 color)1 1 1...

the length of the elements is even : (2 colors)1 2 1 2...

and now we just need to think situations where the length of the elements is odd

if

`t[1]==t[n]`

then: 1. (2 colors)1 2 1 2...else if

`t[1]!=t[n]`

and at the same time there exist one`i(1<=i<=n-1)`

where`t[i]==t[i+1]`

then:(2 colors)1 2 1 2...

otherwise: (3 colors)1 2 1 2 ... 3

What if 7 3 3 4 4 4 4 4 . If I am not wrong according to your algorithm, the answer should be: 1 2 1 2 1 2 1 . But here t[n] is not equal to t[1] and they are also adjacent, then how they got same the colors?

since there is one index

`i`

satisfy the condition`t[i]==t[i+1]`

, we can paint thesamecolor on`i`

and`i+1`

. So for your example, since the first element is equal to the second element, you can paint these elements into`1 1 2 1 2 1 2`

, and it is correct. I got to go to bad now, if you don't understand somewhere, i will let you know tomorrow :)I got it! Thanks a lot!

Think greedily. Try to use minimum number of colors to color figure 1 upto n-1(you can color these n-1 figures maintaining all constraints using 2 colors only) and then think is you can color figure n with a color already used. If not then give it a new color!!!

Is it only I or everyone was facing issues with the speed of loading for codeforces. I submitted 3 mins before the end of the contest but still, it didn't get submitted.

Try using m1.codeforces.com next time, I sent all my submissions from there with no problem (while I couldn't submit sometimes from www.codeforces.com)

could you tell me how to slove the problem D by easy algorithm

If you like graphs you can see it is a coloring problem. Your vertices are the different animals and there is an edge between them if they are of a different type and adjacent. Now you want to color this graph, such that all adjacent vertices have different colors. This gives you three cases: 1. If the graph has no edges (ie only one type) you only need one color

The graph is not a cycle, then you need two colors, since you can just color any path as 1212...

The graph is a cycle, then it is important whether it has an odd or a even length (if you are interested how this generalises look up bipartite graphs)

If the length of the cycle is even, then you can't color it in a 1212...1 fashion, since the first and the last edge would have the same color. Therefore you need three colors and can color it like 1212...23

If the length of the cycle is odd than you only need two colors and can color it like 1212...2

I hope that is understandable :)

Or more simply put ; if the graph is non-bipartite ; then print the bipartite coloring.If it is bipartite ; it would be because two adjacent vertices get the same color while bipartite coloring ( This is the odd length cycle case ) . Color one of these vertices to some 3rd color ; and then say Yayy! when u receive AC !Code

Suppose input array is 1 , 2 , 3 , 4 .Now the graph will be square 1---2--3--4 and 4 is connected to 1. .I can color vertex '1' as 1 , '2' as 2 , '3' as 1 , '4' as 2 and thus no consecutive vertex of the graph has same color.But you have mentioned that we cannot color cycle of even length.Please tell if you are saying something else.

Also in your post some times you have written color the 'vertex' and some times you are saying that edges have been colored (though both should not make any difference in case of cycle)

If there is only $$$1$$$ type of animal, then the answer is $$$1$$$ color. We can simply print $$$1$$$ $$$n$$$ times.

If $$$n$$$ is even then the answer is $$$2$$$. We simply print alternating $$$1 2 1 2 . . .$$$

So, we are left with the case when $$$n$$$ is odd. If we can find any $$$i$$$ such that $$$type[i]=type[i-1]$$$(cycle included, i.e. $$$type[0]=type[n-1]$$$) then the answer is $$$2$$$, as the parity can be switched. Otherwise, the answer is $$$3$$$.

To print the colors with answer $$$2$$$, you can alternate $$$1$$$ and $$$2$$$ with the exception of $$$i$$$ where $$$type[i]=type[i-1]$$$. Put that as the same color. This changes the parity.

If all elements are same, answer is 1 If all elements are distinct and number of elements is odd, answer is 3 otherwise answer is 2

if all are distinct, simply print 1 2 1 2 ... like this otherwise take every segment containing distinct elements and fill it by 1 2 1 2... those are left, give any colour to them

By observation it can be seen max distinct color required will be 3. Now if n is even 1212.. pattern will work if there are more than one number. For all same obvious 1 color will be required. Now for odd n, consider if there are at least 2 contiguous same number in cyclic array in that case color required will be 2 otherwise 3

You can solve D without graphs as well. It can be solved greedily.

If n is even, just print "1 2" n/2 times

If n is odd but a[0] == a[n-1] print "1 2" n/2 times with an extra "1" in the end

If n is odd but there is a point where arr[i] == arr[i-1], then from 0 to i-1 print "1 2" and from i to n-1, print "2 1"

If none is true, print "1 2" n/2 times with an extra "3" in the end

Corner Case (it was for me): If all are same print "1" n times.

Whoever made D is a sadist. T_T

It was very unique; I loved it. I solved it using dp, but it was very messy.

Detailed video for F

Here

thanks it was helpful

please can you tell me why using library sorting I am getting TLE but with radix sort it passes my_sub constrain is just n= 2*10^5 so O(nlogn) is fine right the why?

in Java, arrays.sort can run in O(n^2) in some conditions.

I'm not well aware of how this works in Java, but I heard that can be the case sometimes.

Thanks got it... Btw for java users here is the link explaining this in details

Also inbuilt sorting from Collections class(for list) of java passes it efficiently my_sub..mainly I converted array to list then Collections.sort(list) .

I thought I would never complain about that but 101 tests in E did make my submission take a lot of time to be judged :)

I don't know whether someone else has experienced this or not but codeforces was taking way too much time to show up. And many times it just says some error has occurred (my connection was good enough). Kind of annoying during the contest.

Too much traffic

my account is getting logged out without my intervention!!

same

same.

Same

I suprised that with that much number of registrants, the main page still worked faster than m1

I've got 403, 503, 504, 502 not once or twice) Who got more 'AC'?

(At least)

last three minutes of the contest

the

sites were inaccessible(including the lightweight websites like m1.codeforces.com).

I had

no chance to submitmy problem D solution.m3 worked fine

m3 worked for me, I submitted at 1:57

m2 worked fine as well.

I submitted from m2 in the last 3 minutes

It seems, then, that it was m1 which I was unhappy with: I tried both main site and one of m1/m2/m3 (not sure which one).

P.S. Now it's not a big deal :) for me

(managed to submit in practice mode, my solution is wrong).

I think it is problem of internet in your country, not codeforces.

usually it works fine in my country

also, Bad Gateway response from server looks more like server overload problems, not like connection problems on a client side

same got 503 multiple times, and it was irritating.

I finally thought I had found all the corner cases for D but it still gave me WA. Are we sure they generated all the possible outputs? xD

I used dp as I didn't need to worry about handling all corner cases explicitly XD (P.S. I couldn't think of any corner cases).

Ok, reading j_peters comment above I just found what I was missing. It was a narrow miss and just because I'm dumb >D My fault

1 2 2 3 Ans 2 colours Check this

Yea, you're right. I missed the fact that you could use any two adjacent of the same type to flip the sequence and use 2 colours, not just the last ones.

Second pretest prob D why this answer is wrong ?

Why do you believe it is considered wrong?

Because that's what my code prints, when I submit it show me WA pretest 2!

Edit

Sorry my bad I though pretest 2 = query 2.

Are you sure it says pretest2 and not

Test2?? You can look with more detail to where did it fail from your submissions tab.EDIT: Oh, ok then, no problem

Is this contest rated?

For those under 1600, like me, yes

Had worst experience ever in this contest....Became frustrating when even problem submission taking a hell lot of time.

what the fuck! I can't access the codeforce after submitting A until div3 over! It always show 403 forbidden or log out my account. No other meaning, I'm just bringing up what happened to me.

Use the lightweight mirror sites. Such errors are to be expected in contests with a large number of participants. After all CF isn't a for-profit company, and can't buy up a large amount of servers unless really necessary.

I also have tried to log in m1 mirror site, but it not work. But thanks codeforce for providing a practice environment to me.

then you should try m2,m3 also

is this round rated? cause the server was extremely slow and i could not even submit some codes

vovuh please make it unrated for me or consider my d solution. I submitted this solution at 22:00 butdue to netowrk traffic or i don't what happened hasn't got submitted. I am saying so because my solution was right otherwise I wouldn't requested you(I submitted as soon as connection got back). Please refer to my issue

I had the code for D wrttien with 15 mins to go, but couldn't submit at all. I was finally able to submit in the last minute and it gave wrong answer :(

I submitted at 22:00 but I don't know what happened because of some site error i didn't get submitted. BTW my solution was correct I submitted it without any changes

Make the contest

unratedbecause lot of people couldn't submit their solutions :/Yes!

The mirror sites worked just fine.

Hi, sorry about it. I'm working on performance improvements. But am I right that m1/m2/m3 worked well most time? I explicitly suggested to use them in case of any technical issues, right?

With a few exceptions towards the beginning, M2 worked fine for me throughout the round.

in Italy we had problems even using the mirror websites :c so i guess it would be better to make it unrated

I even faced that problem

don't ask for making round unrated (under the name of slow servers). The actual reason is that your rating will go down (because you solved only two questions). Even though you are complaining that the server was slow, I see that you have already made a lot of submissions. How many more did you want to make

well, you can even see i got AC with basically the same code (i tried to submit it during the contest, but the website and the mirror1 weren't working) ten minutes later the end of the contest.

(the other submission in the same minute is an error, i submitted the wrong file)

Then it's your responsibility to check mirror2 and 3 as well. The rounds prepared with so much of hard work cannot be made unrated because of a few people's nuisances. I hope you take that positively

It is already unrated for me, but it was so sad I couldn't submit E. It's good to know about the mirror sites. I didn't know about them.

Honestly the main one worked pretty fine for me..

Faced issues even with M1 website. Was not able to load questions. Had to re-submit code few times. If many people faced such issues , maybe we make this contest unrated ?

M3 worked fine as well

For me all m1,m2,m3 worked just fine !

I used m2 , it worked fine

Nah ! I got frustated and tried both m1 and m2, none worked.

m1 and m2 didn't work.

sir i have no experience using m1,m2 and m3 then , i thought it would free up after one or two reloads but that was not the case,i was logged out around 5-6 times

I want to know why I am unraded in div3

Yes please

The moment I realized that my 'expert dream' was broken! Btw, how to solve E in the time limit?

Instead of iterating to find kTH ancestor, precompute LCA(using binary lifting) and rest is same what you are doing.

I got it, thank a lot!

Can you please elaborate?

distance(u,lca(deepestnodeInTheQuery,u))<=1 for all u in the query.

What I understood in your solution that you're trying to get the depth of every node in the tree, then what else? cause I didn't get the idea of the second part of the code after the BFS call

In each query, I make a path from the root to the vertex which has the biggest level. Every vertex in that query or their parent must belong to that path :(

Actually one can evade writing full-fledged LCA at all. To do this, just notice that you are only interested in parents of the marked vertices. Checking whether one node is an ancestor of the other can easily be done if you use time when DFS enters and leaves the node (tin / tout). AFAIK, there were absolutely no problems with TL with this approach.

Agreed, I just did it this way. https://cp-algorithms.com/graph/lca_binary_lifting.html

The above is about LCA, but you can see the implementation has an

`is_ancestor`

subroutine which is enough for this problem. So it's an O(n) time solution.Unable to submit due to 403, 503 errors or slow server response. I am very frustrated. What is the cause of this problem. I am also think that problem C was not in the good place. It should be problem A or B.

Can someone explain how to solve B? I feel stupid.

I solved using a

recursivefunction with one added extra parameter except N and K: cntB -- the number of 'b' characters which should be present in the string (it can be 0, 1 or 2).The problem can be solved trivially for cntB=0 and cntB=1. After solving for those two cases, you can consider cntB=2 as having two subcases: one with first letter 'a', the other with first letter 'b'. (Note that the number of cases started with 'b' is easy to calculate if you already colved cntB=1 case.)

I think this solution (74434027) is not optimal but it was somethink I could think out more or less quickly, worked for me.

Consider position of the left 'b', let that pos be $$$n-p$$$ Then there exist $$$p-1$$$ strings with left 'b' at that position, because you can place the right 'b' at $$$p-1$$$ positions.

Implement a loop counting the number of these strings with increasing $$$p$$$.

can you please share your code?

74425278

Note that after klick on a user you can see that ones submission after click on 'Submissions'.

Very frustrated because the website was not working properly(errors) may be due to heavy load on website..The questions did not load fast and also to submit had to reload the page again and again

How to use dp in D? I solved using a lot of if else statements

for problem D, my solution was this

let the continuous elements form a grp,

if #grps == 1 then all same color

else if #grps is even then only 2 colors (alternate colors) else if #grps is odd and #grps == n then 3 colors

else if #grps is odd and #grps < n then we can do with 2 colors only , we just have to color the last element of a continuous grp (of sz > 1) with a color diff from that of the members of the same grp and continue alternating

but this gave WA on TC2, dont know why

(I got WA on test case 2 at first)

Try a test case like

and make sure your coloring is valid.

after the contest, i implemented a dp solution and left a lot of comments, check it out if you want

https://codeforces.com/contest/1328/submission/74505814

Could someone help me figure out what is wrong with my submission in Problem E 74478785

An edge from u to v doesn't mean that u is the parent of v if we build the tree from root 1

More than 23K people participated!!! I think it is a new Record!!

One of the worst Div3's contests i have ever been entered !!

The site broken down many many times through the contest !! specially at the end of the contest

The difficulty of the problems

Wasn'tproperly distributed well at all !!!Thank You!

Service was not so much bad comparing whith load..

Anyone experienced something like this after submitting solutions. HTTP Status 403-Forbidden(Sorry I am not able to upload the image in comments. So here is the link of the screenshot I am talking about: https://pasteboard.co/J0UgDjL.png I submitted my solution for A and C and experienced this screen and assumed that my answer got submitted but it wasn't and it was happening throughout the contest.

I also face this type of problem, today.

same problem

Tughe kya lgta hai mike tere liye contest cancel karwayega

I want more contest. It is the best way to spend time!

I solved E in O(N+K) (K is the total sum of k_i) using offline querys and dfs. If you guys solved it with O(NlogN) complexity, have a look at my solution :D

https://codeforces.com/contest/1328/submission/74433847

Online?

Offline here means you grab all queries and process them all at once as you know the input data (here the tree structure) won't change.

Can you solve it Online?

Sorry I misunderstood what you meant. I saw your submission on E. Sounds very interesting. For those you may be interested: https://codeforces.com/contest/1328/submission/74446758

Can you solve it Online && o(n) ?

Yes, I can think of two ways to do this

1). Fast LCA in $$$O(1)$$$ using Farach Colton Bender algorithm

2). Precompute in and out times in dfs traversal for each node. This let's you answer $$$ is\_ancestor(a,b) $$$ in $$$O(1)$$$ time.

I solved E in O(N + KlogK)(K is the total sum of k_i) but answering queries in online.

My solution: 74522963

To solve E, I used binary lifting technique on the tree. I precomputed for each node $$$log(n)$$$ parents using dfs(same preprocessing which is done for LCA). To process each query, I pick the node with index $$$i$$$ that has maximum depth among the $$$k$$$ nodes which are given in the query then I simply check for any other node in $$$v$$$ if:

-$$$v[j]$$$ is an ancestor of $$$v[i]$$$ on the path from $$$1$$$ to v[i] with distance equal to $$$depth[v[i]]-depth[v[j]]$$$ from $$$v[i]$$$

-$$$v[j]$$$ is the child of the ancestor of $$$v[i]$$$ on the path from $$$1$$$ to $$$v[i]$$$ with distance equal to $$$depth[v[i]]-depth[v[j]]+1$$$ from $$$v[i]$$$

if none of these two conditions is fulfilled then the answer is "NO" and if at least one of these two is fulfilled for all nodes in $$$v$$$ then the answer is "YES" for this query.

This task has a simpler solution.

What is it?

Online && O(n)

You have a solution n log you use sorting.

I think that's a bit easier:

Why am I getting a WA on tc 56. Any hints to the testcase.

Thanks in advance!!

My Solution

Won't it cause TLE if the tree is "straight" because in that case deepest node will have depth = n so time complexity would be O(m*n) ?

Good question! This is what the

binary liftingtechnique solves (as mentioned by amiratou): for each node, you store its parent, its 2-parent (parent's parent), 4-parent, ..., $$$2^k$$$-parent up to $$$L = \log(n) \approx 19$$$. Then you can jump through the tree in $$$L = O(\log n)$$$ steps for each $$$v[i]$$$.The statement guarantees that the total size of queries is under $$$2 \cdot 10^5$$$, so this should work.

Thanks, Codeforecs as this is the best thing in which we can contribute our quarantine time period.

But in this contest, a lot of issues were there because of server and problem D even I am not able to submit the solution of problem D because of the server error. No regrets, Hail Codeforces!!

My rating right now is less than 1600 but it is showing me as unofficial participant in this contest... This is may be because i registered when I was expert... So finally whether i will be considered Official or not in this contest?

Giving this div 3 contest for first time on this platform would have been a lot more fun if their web server wouldn't have stopped responded which took the peace of my mind. It took me a lot of time to understand that I have to go to one of those light websites, login again, wait for 3 minutes and refresh the page to see the verdict. It was a total mess.

There was problem in submitting code It showed Http error while submission

I had the same problem during contests

How soon editorial will be because there are a lot of interesting and hard problems?

How to solve D?

answer 1 — when all the numbers in the array are the same

answer 2 — when you have n% 2 = 0 or when you have two consecutive identical elements (you can change the parity, draw there is not difficult))

answer 3 — everything else (paint the first vertex in color 3, and then alternate 1 2)

http://codeforces.com/contest/1328/submission/74484167

Can anyone explain me whats wrong in my solution for D ?

I basically looked for an adjacent pair of equal values. If such pair exists then answer would surely be 2 (or 1). I started giving colors accordingly based on comparision of a value with it's preceding one.

If such pair doesn't exist then answer would either be 2 or 3 depending on whether number of elements is even or odd.

what's your output for this 7 1 2 3 1 2 3 ?

You mean 7 7 1 2 3 1 2 3 I suppose ?

I'm getting 3 1 2 1 2 1 2 3

nvm, got it !

what should be output for this?

3 colours, 1 2 1 2 1 2 3

Here's a countertest:

You output

`2 2 1 2 1 2`

, which is clearly invalid.Damn, should have worked according to my logic, didn't code it properly i guess ;(

Thanks a lot for your help

Can anyone hack this submission. Not able to find why it is right or wrong :(

Thank You

I did not run any testcases, just went through your code and i think your logic is right.

You have sorted in decreasing order of levels, and after that for each pair you have checked if their lca is either equal to the latter or its parent. This is what I understood from your code.

This is correct in my opinion because suppose answer is YES, then it is mandatory that a vertex with greater level lies in subtree of all vertices with level lower than its own or in case a vertex of lower level is replaced by some other element at distance 1, then from it's parent. Since you have sorted in decreasing order so transitive relation will hold within the vertices i.e if u lies in subtree of v with level[u] > level[v] and v in turn lies in subtree of w with level[v] > level[w] then u lies in subtree of with level[u] > level[w] and above condition will hold true.

The questions were standard however the server was very slow and had a very bad gateway. I had been trying for logging in for the past 20 minutes and submit however I was not able to do

It would be nice if you make the contest unrated.

Please either consider by third question I submitted during the contest or unrate it !! The contest was a total mess I couldn't upload my solution !! Really frustrating!!!!

Why during the contest codeforces has thrown me out of its profile many times and I couldn't open tasks ? Also I couldn't join to m1, m2, or m3 codeforces. Why this bad things happen to me? Who had same problems?

Same problem buddy

This time, the contest was at a very good level. The problem D had the exact amount of difficulty which should be there for creating a margin between participants and it saved the contest from becoming a speedforces :)

Anyone knows why https://codeforces.com/contest/1328/submission/74488792 is accepted (Python) and https://codeforces.com/contest/1328/submission/74488483 is not (PyPy) as generally PyPy is faster than Python. Cost me 1 hour...

Probably bad string concatenation, which CPython is helpfully optimising to $$$O(n)$$$. See my comment here: https://codeforces.com/blog/entry/74235#comment-589125

Thanks!

recently police arrested div.1 guys... 'cause the site was underage. p.s. -- i tried submitting problem D solution during last minutes, but site kept on crashing... phew! 24K contestants

Following.

Very correct

can someone tell me the problem in this code.I'm getting WA for B. or any good corner test case. i used val=(-1+sqrt(1+8k))/2 and position of b=n-1-val || n-k+(val*(val-1))/2 https://codeforces.com/contest/1328/submission/74481937

Conduct contests alternatively on day basis. Quarantine days.

seems like vovuh prepared these questions for Educational round and it posted as div3 by mistake lol

As mentioned in the annoncement that it will be unrated for participants with rating >=1600,but still it is showing me as a trusted participant and also there are lots of expert in official standing. Does anybody know why this is haapening?

You must have registered before turning blue

Can someone get penalized for unsuccessful hack attempt in div 3 contests?

No there is no points for successful hack as well as no penalty for unsuccessful hack in div3 rounds.

Is there points/penalties for hacks in educational rounds?

No.

i was logged out almost 5-6 times, it was showing bad gateway all the time

and logging in would take another 5-6 min

and this might have happend to many users

https://i.imgur.com/zVqJ4a1.jpg

@codeforces do something about it in future and about this round

And this https://imgur.com/ubmZOeL

How to Solve D if it is compulsory to paint the same type of animals with the same color, and we have to minimize the total number of colors used as given in the problem statement.vovuh pikmike

Sadly thats NP complete, you can easily reduce the normal vertex coloring problem to it.

Didnt get you. Could You please elaborate.

Thanks j_peters

Do you know what NP-completness is?

Yes I do, but I dont know what you mean by the normal vertex coloring problem!

Just the problem of deciding whether a graph has a k coloring is NP-complete (https://en.wikipedia.org/wiki/Graph_coloring). And you can reduce this problem to the problem described by you.

The server was too slow! I couldn't even read some problems and check my verdict after submissions! I hope Codeforces will fix the issues in future contests because it affects our ratings!

MikeMirzayanov Its not good. I was using m1.codeforces.com during the contest and while solving problem d , no clarification came that two same adjacent species can have different colors too. throughout the contest i was getting wa bcoz of this fact. why no announcement appeared on mirror sites.

It was pretty clear from the problem statement itself that two same and adjacent species could have different colours. You should maybe try and read the problem carefully than complain.

I think you are wrong, as many participants (it is just my opinion). This issue is even considered in examples and you just didn't see it as

manyof the participants who asks us about this. The second test case of the example: $$$t = [1, 2, 2, 1, 2, 2]$$$, $$$c = [2, 1, 2, 1, 2, 1]$$$. $$$t_5 = t_6$$$ and $$$c_5 \ne c_6$$$.vovuh My complain is only that, why updates are not visible on mirror sites. I am not complaining about the question. But if new updates would have appeared then it would be good for participants who use mirror sites for faster access. MikeMirzayanov

Okay, if you complain

onlyabout this, then I agree with you that notifications and clarifications should be allowed in mirrors because it's unfair and it's an advantage for other participants. But don't forget the initial target of these mirrors: they were created to allow users read and solve problems almost offline even if the main site doesn't respond (afaik). I don't sure but hope this issue will be fixed.Yes, one might get the right approach or atleast understand what the question is really asking, where sometimes people face difficulties due to some lack of clarifications. so if updates are also appear on mirror sites then its good. leave it, no issue. i will open one main tab of cf.com aside of mirror site, to get any notifications. thanks for reply.

I even didn't notice there was a notification for that problem. This failure could be a good experience for future contests. Personally, I won't start thinking on a problem, let alone coding, if I don't understand every corner of a problem statement.

Why am I unofficial??? MikeMirzayanov Vovuh

You might have registered while you were blue.

In that case MikeMirzayanov, this bug should be solved.

Sadly, a lot of O(n^2) and O(k) solutions are passing for B i think

I think no , in worst-case : n = 10^5 or k = 10^9 ,So: if O(n^2) = 10^10 OR if O(k) = 10^9 this will give TLE that if also T = 1 , Let's say if T = 10^4 and n = 10^5 in evey test-case so complexity will be equal : 10^10 * 10^4 = 10^14 this absolutely TLE :). So i think every solution O(n^2) or O(k) if pass in pretests will Fail in final test.

It is probably because of some compiler optimization ig.

How to solve Problem F using DP?

Thanks!

How to solve C ?? idea needed

The idea is quite simple,we have to minimise the maximum of two numbers. 0 can be written (0+0)%3,now for 2 we have two possibilities either (0+2)%3 or (1+1)%3,using the latter it is guaranteed the solution won't become worse and is optimal. For the final part, 1 can be written as (0+1)%3,adding 1 to any string guarantees that string to be greater than the other one in decimal format. Now we can append 0s to that string and x[i] to the other string.

We know the following:

$$$0 = (0+0)\mod 3$$$

$$$1 = (0 +1)\mod 3$$$

$$$2 = (1+1)\mod 3$$$ or $$$ (0+2)\mod{3}$$$

We loop $$$i$$$ from $$$0$$$ to $$$n-1$$$:

For $$$c[i]=0$$$: we simply append $$$0$$$ to both a and b.

For $$$c[i]=1$$$: we append $$$0$$$ and $$$1$$$ to $$$a$$$ and $$$b$$$ respectively. After doing this the first time, we would always have $$$a>b$$$, so we append the reverse i.e. $$$1$$$ and $$$0$$$ to $$$a$$$ and $$$b$$$ respectively. This minimises $$$a$$$, the maximum of the two.

For $$$c[i]=2$$$: we append $$$0$$$ and $$$2$$$ to $$$a$$$ and $$$b$$$ respectively, once we have encountered $$$c[j]=1$$$. Otherwise, we simply append $$$1$$$ to both $$$a$$$ and $$$b$$$. We can see this easily if we take a number which has no $$$1$$$. We would try to distribute $$$2$$$ evenly, as we want to minimize the maximum.

My solution for Question

D without using Graphs and DP.https://codeforces.com/contest/1328/submission/74499296

can someone explain the code in editorial of this problem?Codemonk-Best Index

Here is my code with explanation.

code...

Need idea for B , i got TLE using stl next_permutation.

u will get tle as there can be n^2 permutations.

You cannot use next_perm function as it will calculate n*n perms.

you simply need to find positions of both the b's.

Is there any other way to solve E rather than LCA?? Can somebody please help with what is the problem in this approach,, Link : https://ide.geeksforgeeks.org/jws6KpkplH

Lets say what

len[i]is length from root to i. We have some nodes in query, lets sort they by theirlenand group by thislenin somemap<int, vector> sort_by_len. lets saycurrent_root— root of lasts nodes. Go through the sort_by_len and say, what if nodes with the same len have different parent we don't have answer. Of course if it is a root of tree we need to updatecurrent_root= 0; If they have the same parent =current_parent, if we dont havecurrent_rootwe need update it =current_parent, in another case we need to say what thiscurrent_parentis child ofcurrent_root(we can do it using tin and fup time in tree in O(1)). In case if it isn't we don't have answer. And updatecurrent_root.Link: http://codeforces.com/contest/1328/submission/74462201

Well I wasn't able to understand your code. But indeed you can solve it in O(nlogn) using dfs. There is another version of DFS, where you store arrival and departure time of every node. Search for it. 1 For answering every query, just sort parent of all vertices with increasing depth. (Depth is a distance of node from root that can be calculated using dfs and parent too). 2 Now for each vertex let's say v, check if arrival time is moe than or equal to vertex u and departure time is less than Equal to vertex u. (Here is the first vertex vertex in the sorted list of vertices) 3 If not then answer is NO else it's YES. :)

i had an issue at problem C usually i use Kotlin for my submissions i had TLE at test case 5 i made another submission using same code but in java this time and i got an ac

the kotlin sub : https://codeforces.com/contest/1328/submission/74481945 the java sub : https://codeforces.com/contest/1328/submission/74513383

More div. 3 contest pls ~.~