Hello Codeforces!
Asymmetry and I are glad to invite you to Codeforces Round 743 (Div. 1) and Codeforces Round 743 (Div. 2), which will be held on Sep/18/2021 17:35 (Moscow time).
Each division will have 6 problems and 2 hours to solve them. All problems were written and prepared by Asymmetry and me. The round will be rated for both divisions.
We would like to thank:
- Monogon for coordinating the round and helping us with the problems.
- mnbvmar, gamegame, dorijanlendvaj, tnowak, Jasiekstrz, ijxjdjd, phattd, lcaonmst, -_-INV4D3R-_-, ToxicPie9, Shinchan01 and Krzaq for testing the round and providing useful feedback.
- ToxicPie9 for being a VIP tester.
- finally, MikeMirzayanov for great platforms Codeforces and Polygon!
We've put great efforts into preparing this round and we hope that you will enjoy it.
Good luck!
UPD: We would also like to thank Ari for testing the round and KAN for translating the statements into Russian.
UPD2: Here are the scoring distributions:
Div. 1: $$$500$$$ — $$$1250$$$ — $$$1750$$$ — $$$2500$$$ — $$$2500$$$ — $$$3250$$$
Div. 2: $$$500$$$ — $$$1000$$$ — $$$1500$$$ — $$$2250$$$ — $$$2750$$$ — $$$3500$$$
UPD3: We are sorry that the round became unrated due to the long queue. We hope that you enjoyed the problems anyway.
Winners
Congratulations to the winners!
Div1.
Div2.
UPD4: Editorial is out!
Since Monogon had ascended into the coordinator realm, I became the new VIP tester.
btw, as a VIP tester, I tested
As a tester, I wish you sunny weather ^^
As a resident of a warm country I downvoted.
as a lover of your pp,I still downvoted you
as a -ummm ughh uhhh yes
As coordinator I want to thank the VIP authors Asymmetry and Markadiusz
.
Ah, you misplaced dogs
As participant I want to thank coordinator Monogon and authors Asymmetry and Markadiusz
Looking forward to participate
Challenge:hit 200 downvotes under this comment (bye bye contribution)
As a coauthor, I wish everyone best of luck and a positive skill delta after the contest.
As a tester, I wish everyone happy rating :)
Don't wanna miss the contest but suffering from anxiety and depression for the past few days.Hopefully I will overcome anxiety and depression soon and start playing in contests
Mental health is much more important than competitive programming, so take it easy, hoping for some well wishes from a fellow stranger.
Yeah,I am going to meet my psychologist today for that reason.Being mentally strong is important in cp too.Because you can have all the skills in the world but if your mind is unstable during 2 hour contest I Don't think you can deliver your best.Anyway,I am going to consult my psychologist soon and come back strongly.And thanks for your kind words.Cf has really been like a family to me
I hope you become well in the coming days and I wish the best of luck for you in the contest
Thanks for your support.Unfortunately I am not stable enough to give today's contest but hopefully I will be giving every contest in cf from 23rd September.I wish you all the best in today's contest
Thanks turzo_sawroop , I'm still working on a strategy to reach a better level but I think it will take some effort and time to reach a higher rank
solve 1/2 1200 rated problems
solve 1/2 1300 rated problems
solve 1/2 1400 rated problems
Do these three things everyday
Do this in every week
Do all these in the next 2 months and be confident and always believe you can be as good as anyone.
Hopefully your rating will be between 1200-1300 after that
From my experience, I think you just need learn the basic technique to get rating >1600. Do too much easy problem doesn't make your skill better.
kickstart round is also scheduled from 17:00 UTC on the same date, can u guyz plz prepone the round?
That way it will clash with Atcoder ABC
Whats your Atcoder Handle ??
As someone who wants to hit -69 contribution mark, I request y'all to downwote for high ratings. thank you!
As an old, almost retired contestant who grew up in the same school as the authors, I'm thrilled to see what my younger comrades prepared :)
Interesting division 2 scoring distribution. I expect (and hope for) a sizeable jump between C and D.
Early scoring distributions! :D
I am a newbie and started giving contests on this platform from this month itself. Excited for this another upcoming contest!! All the best everyone!
I am a specialist and started giving contests on this platform from last year itself. Excited for this another upcoming contest!! All the best everyone!
I am a pupil and started giving contests on this platform from this year itself. Excited for this another upcoming contest!! All the best everyone!
I am a future expert and started giving contests on this platform 20 yrs ago. I was excited for this then upcoming contest!! All the best everyone!
Lmao
Target to solve A, B & C asap to get a good rank, D seems to be much harder based on rating distribution.
Noice looking contest good luck :> HEHEHE HA
I hope a good result for everyone !
Very good stuff worked to prepare this contest I guess, thanks
As your father,I want some contribution
I just want to say that 743 is a prime number.
why are you a foolishgoat ? Btw I just want to say that number of characters in foolishgoat is also prime (11)
Well, I'm foolishgoat because I'm just a goat that comes to Codeforces so that I can train and become a smart one.
Wish Me Cyan !!!
"An Unexpected error" is showing up whenever i am submitting my solution!!! Anyone else facing the same issue????
Queue :(
too long queue :(
A contest after ages and what we see is a Queue
unrated please
QueueForces T_T.
such a long queue , it has to be unrated .
15 minutes since A is in queue.....
too long queue:(
while true: dequeue()
please extend the contest by 15 mins at least due to the long queue.
don't make it unrated because the problems are really good.
just cause you solved , this is unfare to wait for 20 min to get wa verdict
i never said it is fair to not make it unrated but an alternative is to extend it since a contest is much awaited by everyone.
imagine waiting for B and then getting wa after 30 min for some silly stuff , meanwhile some guy solved after 30 min and submitted in first go , I dont think extending contest will justify now
This should definitely be unrated!
The contest must be unrated . Such a long queue
I think there should be a clear guideline in Codeforces when the round should be unrated. Because queue in first few minutes can severely affect the rating in case there is a difficulty gap in the problems.
Why so long queue??
Too long queue, please, make this round unrated
The queue is too long today? i submitted a solution 5 mins back and still it's not judged yet.
20 minutes here bro!! I feel the same
30 min here
MikeMirzayanov what type of queue is used for submissions, my submission at 7 min is not yet judged but some user's 12 min sol are judged. Please help!!!!
That might be a stack, not a queue then!
might be a stack of queues lol
If unrated, my possibility of becoming CM will be ruined for this time.
If unrated, my possibility of becoming newbie will be ruined for this time.
Sed lyf, but the chances of being unrated is 99.99%.
Thanks codeforces. I will be back again.
Done :( Hope you break into CM next edu!
Done :( Hope you break into CM next edu!
Same :sob:
I feel you.
If unrated, my possibility of becoming pupil will be ruined for this time.
Same here . 2nd person to Solve C . Also A and B were pretty easy but here I'm crying
probably because of queue issues and many ppl left, just saying
Unrated please!!
Why queue is so long?
Is it unrated?
20 mins just to get wrong answer so sad
The contest should be unrated cause of long queue!
(https://c.tenor.com/SB66UNkGc0gAAAAd/sloth-slow.gif)
I am waiting for more than 30 minutes, still my solution is not judged .
Disgusting queues
Such a bad queue :(
Me: submits
Codeforces: Click this
Imagine submitting before 30 min and getting WA. :))
It'll be unrated, there's no point participating. There's no better way to compensate for never getting results on pretests.
queueForces
it's unrated no doubt just have fun solving problems
Nice round. It's a pity that this round is unrated(
Great questions, sad the round will be unrated.
Second person to solve C only for round to get unrated xD
I thought the problems were really nice, so I'm disappointed that the round went unrated.
will it be unrated for div 1 also?
still 0 announcement
When I solved A and B under 15 minutes, the round gets unrated. Of course, why not :(
Thousands of submissions are in queue and only one of them is running. why?
B and C were so beautiful, very sad it's unrated.
this is not expected from such big organization please fix this for once I did so good in the contest (a and b) this fast (i'm newbie) :(((
Results of other OJ:
Result of Codeforces:
lol
3ms TLE kinda sus tho..
lol
where i can see it? im about first image
Feels sad man , when first contest you give goes unrated :(
I_Hate_Swaps you shouldn't feel sad
problem B.Swaps
nowdays Long queue is common problem in cf. please do something MikeMirzayanov :(
Imagine waiting for a Codeforces round for 1 week... and this.
Unlucky comeback after ~2 years of inactive. F.
unraited...
How to get rid of queues on CF?
Make div. 1 rounds only
It was the first contest I liked in probably the last 12 months and seeing it getting unrated this way, I feel sad for the authors very much. Markadiusz and Asymmetry I liked the problems a lot and hope to see you guys with another contest soon!
Thank you for your support :)
Problem 1C seems to be the same with Problem C in 2020-2021 ACM-ICPC, Asia Kunming Regional Contest.
cucked my comeback
The problems are nice! Because it is unrated now, I can sleep early today LOL :)
do kickstart that is in ~80 mins from now
That's too late :(
This is still a good problem collection and worth trying out. I will still try to do my best even if it's unrated.
1-gon's first round got unrated due to the long queue. Now Asymmetry and Markadiusz set their first round coordinated by 1-gon, and the round got unrated due to the long queue. RIP
:(
And Both contests had nice problems :(
logic behind b?
Since a[0]!=b[0] we need to make those two elements so that a[0]<b[0]
That is, we iterate all a[i], and foreach one we find the smallest possible j so that a[i]<b[j] That pair of i,j need i+j operations, we search for the min such pair.
We can find the smallest j for a given i by binary search on the prefix arrays of a[] and b[]. make preA[i] the smallest value in a[0..i], and preB[j] the biggest value in b[0..j]. Binary search the smallest j where preA[i]<preB[j].
We can avoid binary search since we know the numbers in a[] are 1, 3, ..., 2n-1. Create an array c[] such that c[k] gives the index j for number k i.e. if a[i]=k, we get j by c[k]. To fill c[], we can iterate over array b and store index j for all numbers smaller than the current no in b.
Doesn't this require sorting, which yields linearithmic time complexity either way?
No, the numbers are relatively small compared to the length of the input (<=n), so a simple loop, described above, is enough.
Oh I completely misunderstood that comment. I got it now, thanks!
give editorial ASAP.
I have to do a lot of homework.
didn't got any AC.
problem A
how to change 2020 with 6 operation. help me please!!
well I think: 2020 -> 0022 -> 0020 -> 0002 -> 0000
2020 -> 2002 (swap 3rd and 4th element) -> 2001 -> 2000 -> 0002 (swap 1st and 4th element) -> 0001 -> 0000
The problems were good. (especially Problem B...able to do in O(N)) PS: All the best for Kickstart buddies. :)
Any thoughts of problem E? It seems to be a dp problem, but I didn't figure out the recursion formula.
NVM. Thought it was D.
For problem C, we first figure out if it is possible to finish the whole book by SCC (strongly connected component). If size of some (possibly 1) SCC are greater than 1, then it is impossible to complete the book. After that, we use 2 min heap to store pages with indegree 0. First heap stores current traverse. Second heap stores next traverse.
Link for my submission
Using SCC is a bit overkill and definitely a waste of time for this problem.
The goal (when checking if understanding the book is possible) is to check if there is a cycle. We can do that with a DFS (or multiple, in case of a DAG, which we are dealing with here) which, instead of marking a vertex visited, can set two different kinds of flags.
The DFS works as follows:
We can count the result with a DFS too, using dynamic programming on a DAG. Every vertex with no outgoing edges receives value 1, because that chapter will be understood during the first reading of the book. Every other chapter will be understood after all its prerequisite chapters are understood, so the result for the chapter is the maximum of the results for the prerequisite chapters... but slightly modified to account for the order of the chapters in the book.
I'm not the best at explaining so maybe my code will help.
topological sort :|
Yes, and?
Idk :D
I actually used a different approach. I made two heaps : the first one is the "main" heap, the second one is the "pending" heap
The "main" heap's purpose is to store the progress chapters you can learn right now given that you're already learn all required chapters. Meanwhile, the "pending" heap's purpose is to store the chapters which you have learned all the required chapters but the chapter number is less than the chapter we currently on
So let's process the chapters one by one starting by those which have no requirements. (E.g. the ones which have 0 in-degree)
Each time we're processing of the current chapter (let's say we name it U) we do this :
check all other chapters V which has U as requirements
subtract V's degree by 1
if V's degree become 0 then : A. If V > U, then this chapter comes after U, then put it on the "main" heap OR B. If V < U, then this chapter lies before U, since we can't read it backwards, put V to "pending" heap
on the end of each processing, if our "main" heap becomes empty, put all chapters in "pending" heap to "main" heap and increase the number of read by 1 (because this means we will start re-reading the book)
To check if it's impossible, just check if after we're done with all the processing, there exists at least a chapter we haven't processed before
My implementation
This work is O(nlog(n)) though due to the heap! But it's still a fine approach.
Video solution for C using topological sort
How to solve div2 D?
First of all, xor of all the elements of the array should be $$$0$$$ (xor of all the elements of the array isn't changed after any operation).
From here, I am assuming that xor of all the elements of the array is $$$0$$$.
If n is odd, it's always possible to change all the elements to $$$0$$$.
Note that if $$$a_{i}=0$$$ and $$$a_{i+1}=a_{i+2}$$$, $$$a_{i}\oplus a_{i+1}\oplus a_{i+2}=0$$$. This is the main idea of my approach.
Now select indices $$$n-2,n-4,...,1$$$. It's easy to observe that now the first element of the array will be $$$0$$$ and $$$a_{i}=a_{i+1}$$$ for all even $$$i$$$ less than $$$n$$$. First element will always be $$$0$$$ because it is the xor of all the elements of the array Now select $$$1,3,...n-2$$$. After these operations, all the elements of the array will be $$$0$$$ and total number of operations performed is $$$n-1$$$.
If $$$n$$$ is even, you can split it into two subarrays of odd length. So if you can find an $$$i$$$ such that $$$i$$$ is odd and xor of first $$$i$$$ elements is $$$0$$$, you can change all the elements to $$$0$$$, otherwise you cannot.
Oh holy crap this is brilliant. And here I got stuck with some greedy ifological strategy which... I'm reasonably confident would work but I didn't manage to implement it.
Yeah, such approach can work too but I had to consider many different cases.
Basically: we iterate from left to right, either A keeping all elements behind 0 or B leaving all elements behind 1 (for simplicity ensuring that the current element is 1 too after previous operations).
A: if applying the operation to the current $$$i$$$ will result in zero xor, we do it. Else if the $$$i$$$th element is 1, we ensure that $$$i+1$$$ is too; we know that $$$i-1$$$, if it exists, is zero, and we can zero $$$i-1..i+1$$$, and if it doesn't, we switch to B.
B: if applying the operation to the current $$$i$$$ will result in zero xor AND there's an even number of 1s behind us, we zero $$$i..i+2$$$ and 1s behind us two at a time. Otherwise we ensure that the next element is 1 (working through a few cases it can be shown that if it's 0, the current xor must be 1).
First you must have an even number of 1s in the array, otherwise it's impossible to change all elements to 0s.
Then group all the 1s in pairs: (1st, 2nd), (3rd, 4th), ... we will solve the problem by changing each pair of 1s to 0s repeatedly:
101
, then do the similar thing on case 1 but from right to left. Note that there are no extra requirement to this case.So the strategy is firstly find one pair that can be solved then solve the remaining pairs from that pair in both direction. If none of the pairs can be solved, it's impossible to change all 1s to 0s. Submission: 129221560
How to solve div2 B ?
My segment tree solution for Div1 A
can you just briefly explain what you are storing/updating in the nodes?
Can anyone help me to find a counter case? 129205285
Correct answer is 3 yours gives 2.
I have used a similar approach with the topological sort, except instead of storing the chapters to be read in the next iteration in
vec
, i just added n to the chapter and pushed it intopq
. 129229753Thanks a lot, but i was so dumb that i forget priority queue stores greater elemnet first. I thought it keeps smaller element first. You just saved a lot of time mine.
I have tried a video editorial for problem C :book https://youtu.be/KWkkZEGffZw . Have a look at it..and if have any doubts let me know in comments
Can I change the statement that a[i] is (0/1) to [0,100000] on Problem 'Xor of 3'.Is there a solution?
Maybe you can solve the task in each bit, but the operation times may exceed $$$n$$$.
I think We can do that as well in n-1 operations.
I think my solution doesn’t use the 0/1 condition so probably yes.
Video Editorial for Problem Div 2 C / Div 1 A
editorial is also still ``in queue'' LOL
is the editorial rated ?
For Question B, Can Someone please tell me why my approach is wrong? https://mirror.codeforces.com/contest/1573/submission/129231370
My approach is that our task is to make a[0] < b[0], this can be done by two ways, either bring the closest number which is greater than a[0] in 'b' to the 0th position, let's say it is at j-index, then the answer will be 'j', or bring the closest element from 0 in a which is less than b[0], and the final answer is the minimum of both!
Any counter test-case which fails this approach would be highly appreciated!
You are only considering making the swaps on either a or b. In some cases it is beneficial to do the swaps on both arrays.
Is div1 B supposed to make us feel pain?
Yes!.. No? Maybe.
Check this solution out!
waiting for editorial ...
orz Molewus for the round being unrated.