By Errichto, 3 years ago, ,

Hello.

The round 1 of VK Cup 2017 will take place on March 18 at 18:35 MSK (check your timezone here), along with standard div1+2 Codeforces Round #405. The contest "VK Cup 2017 — Round 1" is for teams qualified from two Qualification Rounds. The top 400 teams will advance to the Round 2, while other ones will have one more chance in the Wild Card Round 1 in April. Those who don't participate in the VK Cup can take part in the Codeforces Round #405 individually (problems will be available in English too). All three rounds last 2 hours, and all are rated.

I want to thank: KAN for his help in the contest preparation, MikeMirzayanov that we are here, AlexFetisov for testing, the VK company for this nice annual contest.

I'm a setter and I hope (and expect?) that you will enjoy the problems. During the contest, remember that you can read many problems and try to solve those that fit you most.

I wish you great fun and no frustrating bugs.

div2: 500-1000-1500-2000-2500
div1: 500-1000-1500- 2250 -2500
vk-cup: 250-500-1000-1500- 2250 -2500

The contest is over. See the editorial here. Congratulations to all who advanced to the next round, and congratulations to winners of each contest.

Specifically, the winners of VK Cup Round 1 are:

The winners of parallel rounds are:

Div. 1:

Div. 2:

I'm sorry for letting some slow solutions pass in the Rectangle Strips problem. I tried really hard to prepare tests there but apparently didn't succeed.

Announcement of VK Cup 2017 - Round 1

• +286

 » 3 years ago, # |   +18 limak is back :)
 » 3 years ago, # |   +11 will the VK cup round 1 questions be available in english?? Or atleast will the questions of VK cup round 1 be a subset of union of rounds 405 div1 and div2 ??
 » 3 years ago, # |   +14 Number of problems?
•  » » 3 years ago, # ^ |   +31 There are 7 problems. 5 for each division and 6 for participants of VK Cup. In more detail: div2 gets 1-5, div1 gets 3-7, vk-round1 gets 2-7.
•  » » » 3 years ago, # ^ |   -42 Please add this detail in the blog.
 » 3 years ago, # |   0 "May the Force be with you"
 » 3 years ago, # |   +21 During the contest, remember that you can read many problems and try to solve those that fit you mostWhat does this mean? Does it mean that it is possible that A could be harder than B and the order is toughness will be random.
•  » » 3 years ago, # ^ |   +387 No. Problems are sorted by the expected difficulty. That sentence means that maybe a problem B is some unpleasant geometry in 2D and you don't like it, while a problem C is about geometry 3D, what is your favorite topic. Then maybe you should solve C first.
•  » » » 3 years ago, # ^ |   +541 Thanks , I will unregister :D
•  » » » » 3 years ago, # ^ |   +266 You can read D instead.
•  » » » » » 3 years ago, # ^ |   +327 Thanks I don't like Machine Learning
•  » » » » » » 3 years ago, # ^ |   -10 haha :-Dcarry on
•  » » » » » 3 years ago, # ^ | ← Rev. 2 →   +159 Is D about 4D geometry (my favorite topic)? :D
•  » » » » » » 3 years ago, # ^ |   +22 And problem E is like Polymeric Falcighol Derivation?
•  » » » » » » » 3 years ago, # ^ |   +51 Poor problem A.
•  » » » » » » » » 3 years ago, # ^ |   0 It's quite rare for having a tree in such depth in comment section
•  » » » » » » » » » 3 years ago, # ^ |   -9 I'll just increase the tree
•  » » » » » » » » » 3 years ago, # ^ |   +11 Yours made it reach max depth so I can't increase it anymore :(
•  » » » » » » » » » 3 years ago, # ^ |   -17 Depth first Search
•  » » » » 3 years ago, # ^ |   +10 when some sub-sub-.. comments have more likes than the blog.
•  » » » » 3 years ago, # ^ |   +4 You are still registered :P
•  » » » 3 years ago, # ^ |   0 Thanks.
•  » » » 3 years ago, # ^ |   +25 And if both of them aren't your favorite topic, read problem D or E, which is geometry + insane amount of math.
 » 3 years ago, # | ← Rev. 3 →   +11 When I registered for VK Cup Round 1 Contest,the system showed me the information which told me that I registered for Codeforces Round #405(rated,Div2,based on VK Cup 2017 Round 1) before and I needed to unregister before continuing.However,I didn't register for Codeforces Round #405(rated,Div2,based on VK Cup 2017 Round 1)at all,what's the matter?And please tell me how I can successfully register? (I competed in the qualification round and got qualified.)
•  » » 3 years ago, # ^ |   +1 In case if your name does show up on Codeforces Round #405(rated,Div2,based on VK Cup 2017 Round 1)'s registrant list, you can unregister yourself by going to http://codeforces.com/contestRegistrants/791/friends/true and click the "x" next to your handle. If that's not the case then I don't know D:
•  » » » 3 years ago, # ^ |   0 I didn't find myself in the website you offered,so maybe it's not the case.
•  » » » » 3 years ago, # ^ |   +1 Yeah I just checked that as well. I suppose that's not the case then... Hopefully someone can help you soon.
•  » » 3 years ago, # ^ |   0 I have the same problem and don't know how to fix it :(
•  » » » 3 years ago, # ^ |   0 Please, try again.
•  » » 3 years ago, # ^ |   +5 Yeah, the same information was shown to me and my partner. It said that I have registered for div.2 and my partner has registered for div.1. I don't know what to do to manage this, as in fact we have done nothing before. Hope someone could solve this matter. I don't want to miss the chance to take part in VK Cup.
•  » » » 3 years ago, # ^ |   +22 Just for information: you are not allowed to take part in Round 1 if you are not Russian-speaking. I urge you to respect the organizers and other participants. In addition, Codeforces team did an additional job in order to allow parallel participation of users from all over the world.
•  » » » » 3 years ago, # ^ |   0 Yeah thats fine.But if someone had by mistake written qualification round and qualified then now he has no other choice than to participate in round 1 because it now doesnt allow to register for parallel round
 » 3 years ago, # |   +6 I can't register for Round 1. Each time get this message
•  » » 3 years ago, # ^ | ← Rev. 2 →   0 Try to register Div.2 and then unregister.
•  » » » 3 years ago, # ^ |   0
•  » » 3 years ago, # ^ |   0 Please, try again.
 » 3 years ago, # |   +2 Mike to the rescue.
 » 3 years ago, # |   -9 Guys ... KAN Is Back ... Be Aware ... Be ready with the "FRESH" Mind !!!
 » 3 years ago, # |   -48
 » 3 years ago, # |   +9 How is the average rating of a team calculated? And how will the ratings be updated for the official round?
 » 3 years ago, # | ← Rev. 3 →   +3 I always meet extremely frustrating bugs. LOL ...Thank you for your wish.
 » 3 years ago, # |   +41 I know that you love it Errichto, especially for you I'm posting it earlier than normally. :3
•  » » 3 years ago, # ^ |   +103 I will postpone the system testing 5 minutes for every post like this.
•  » » » 3 years ago, # ^ |   +165
•  » » » » 3 years ago, # ^ |   +11 hahaaha :-D
•  » » 3 years ago, # ^ |   +26 System Test should start now , cuz it takes long time
 » 3 years ago, # |   +6 Excuse me, the terms of agreement of this contest are written in Russian :( (I suppose it is same as usual.)
 » 3 years ago, # |   0 Is is the first time on Codeforces history that a problem gets only 250 points score :\
•  » » 3 years ago, # ^ |   0 No, sometimes you have a Div 1 + Div 2 round with a Div2-C problem that is only 1250 points worth, so Div1-A (which is the same problem) is only worth 250 points.
•  » » » 3 years ago, # ^ |   +18 Frankly, the VK Cup A should be worth 0 points as the corresponding Div2B problem is worth 1000 points...
•  » » 3 years ago, # ^ |   0 For example, Task A from Codeforces Round #329 (Div. 2)
•  » » 3 years ago, # ^ |   0 Smooth dynamic scoring will also give 250 for most A's, as is described in this post. I met with a 250-point problem A on my first contest on CF :)
 » 3 years ago, # |   -12 May be this contest bring high ratings to everyone. All the best :)
•  » » 3 years ago, # ^ |   +3 It's a zero sum game.
 » 3 years ago, # |   -11 This is going to be the best contest ever. So stay connected ..... .. ... .. .. :)
 » 3 years ago, # |   +1 "May the logic be with you."
 » 3 years ago, # |   +39 Rating prediction: div1 div2Рейтинг команд мои приложением, к сожалению, пока не рассчитывается.Extensions: Have fun & high rating:)
 » 3 years ago, # |   0 Poland STRONK!!!!
 » 3 years ago, # |   +16 WTF difficulty?
 » 3 years ago, # |   -31 in div 2: ques B, (X, Y, Z), if X-Y and Y-Z then also Z-X. is this reasonable???
 » 3 years ago, # |   +15
•  » » 3 years ago, # ^ |   0 wasn't there only one graph problem (Friendship Condition)?
•  » » » 3 years ago, # ^ | ← Rev. 2 →   0 771A - Bear and Friendship Condition and 771C - Bear and Tree Jumps? It was about 24 teams than solved more than 3 tasks on VK Cup 2017 - Round 1. So, for most of participants 2/3 tasks was graphs.
•  » » » » 3 years ago, # ^ | ← Rev. 2 →   +5 It's a bit like saying that 771D - Bear and Company was about strings — there was a string on the input but it doesn't mean much. I would say that the Tree Jumps is a dp + number theory problem.Btw. you're saying that almost everybody solved at most 3 problems, so for them 2/3 tasks were about graphs. It would be true if they solved exactly 3 problems, not "at most 3".
 » 3 years ago, # |   0 D is cool :)
•  » » 3 years ago, # ^ |   0 Do you know how to solve it?
•  » » » 3 years ago, # ^ |   0 You should solve problem for one vertex and solve for other vertexes using answer of a parent.
•  » » » » 3 years ago, # ^ |   0 Still don't understand. Could you elaborate, please?
•  » » » » » 3 years ago, # ^ | ← Rev. 2 →   +8 You basically root the tree in any node and do two DP/DFS passes:First, compute the solution for all subtrees — you can easily do that by storing number of nodes in distance d mod k from the root in current subtree. The solution is then the sum of jumping distances in all children + number of nodes in distance d mod k == k-1 in all children.In the second pass, you just need to compute remaining distances using DP values in parent of every node: sum of distances above the node = sum of distances above its parent + sum of distances in all parent's children except for the current node + the same trick with modulo (index hell inc.)
•  » » » 3 years ago, # ^ |   0 Tried using centroid decomposition.... Still got a TLE on pretest 9... I guess I need some optimization
•  » » » » 3 years ago, # ^ |   +19 Centroid decomposition is overkill. Just do extremely tedious subtree DP.
•  » » » » 3 years ago, # ^ |   +5 What is your CD logic?
•  » » » 3 years ago, # ^ |   0 No
 » 3 years ago, # |   +4 From last 5 minutes, when I am clicking on Hack a Solution, page does not open. Is this due to slow internet connection or everybody else is facing a problem?
•  » » 3 years ago, # ^ |   0 That's frustrating... a lot of solutions for B in my room were wrong -- mine included -- and I couldn't hack anything at the end of the contest =|
•  » » 3 years ago, # ^ |   0 I had 3 successful hacks on DIV 2B 4 4 1 2 2 3 1 4 3 4 answer is NO
 » 3 years ago, # |   +1 The hacking system seems to be down for me :(
•  » » 3 years ago, # ^ |   0
 » 3 years ago, # |   +1 Hope all my solution passes and I will finally become candidate master.
 » 3 years ago, # | ← Rev. 2 →   0 is there any better order for (DIV1)C than n^5 ?
•  » » 3 years ago, # ^ | ← Rev. 3 →   0 O(n) solution: 25615179Edit: This is for Div. 2 C, not Div. 1 C.
•  » » » 3 years ago, # ^ |   0 I guess he meant div1C.
•  » » » 3 years ago, # ^ |   +3 The first letter of each name should be uppercase, while the other letters should be lowercase while (x) { cout << char('A' + (x % 26)); x /= 26; } ¯_(ツ)_/¯
•  » » » » 3 years ago, # ^ |   0 Oops.
•  » » » » » 3 years ago, # ^ |   0 As it turns out, I screwed up in the same place if x < 26: return 'A' + chr(x+ord('a')) else: return 'B' + chr(x+ord('a')) ¯_(ツ)_/¯
 » 3 years ago, # |   +5 How to solve Div 1 C. (unofficial) ?
 » 3 years ago, # | ← Rev. 2 →   +31 My brain after solving Div1-B.
•  » » 3 years ago, # ^ |   +6 Agreed.
 » 3 years ago, # |   +2 RIP RATINGS...
 » 3 years ago, # | ← Rev. 2 →   +1 submit C 10 seconds before the end of the contest, waiting.. waiting...Contest is over !! submission not theregood job servers, this website is so laggy these days
 » 3 years ago, # | ← Rev. 2 →   0 Div 2 Problem D is a nice Problem :DSomeone explain his solution please :D
•  » » 3 years ago, # ^ |   -23 its*
 » 3 years ago, # |   +30 Suspicious
 » 3 years ago, # |   -20 I am the god of hacking (Problem A in VK Cup)
•  » » 3 years ago, # ^ |   0 What is the answer for this test case?
•  » » » 3 years ago, # ^ | ← Rev. 2 →   +12 NOBut the fact is that ( 65538 * 65537 / 2 ) % 2^31 = 98305. There were those who used int instead long long.
 » 3 years ago, # |   0 Div1D pretest 9?
 » 3 years ago, # |   -18 When u have coded the solution to easy problem in a contest and the computer crashes and never reloads till the end of the contest.
 » 3 years ago, # |   0 When will be rating updated ?
•  » » 3 years ago, # ^ |   +11 Usually after the system tests.
 » 3 years ago, # |   0 Is div 2 D supposed to be a lazy propagation segment tree after doing dfs ordering?
•  » » 3 years ago, # ^ |   0 No, it was just a dp on tree problem. For a node add the answer for its subtree and then add answer for all its siblings. For this you just need to store at each node frequency of nodes in subtree with distance%5.
•  » » » 3 years ago, # ^ |   0 I was doing this, but I couldnt figure out how to get the distances for the paths that go through the father node.
•  » » » » 3 years ago, # ^ |   0 Just go on updating the parent node from it's children node. All the nodes in children's subtree will reach parent node in just prevDistance+1.
•  » » » 3 years ago, # ^ |   0 It also can be solved using centroid decomposition.
 » 3 years ago, # |   +25 IMO the problems are a little harder than usual, but are very nice. How to solve Div1 D?
•  » » 3 years ago, # ^ |   +7 The editorial is ready but it will be imported only after the system testing. Sorry for the inconvenience.And I'm glad you liked the problems.
•  » » » 3 years ago, # ^ |   +7 I don't know about Div1, but Div2 set of problems deserves ⭐⭐⭐⭐⭐
•  » » » » 3 years ago, # ^ | ← Rev. 2 →   +17 "rated"?EDIT: If you didn't like problems, I will be glad to hear what exactly was bad for you. Maybe I can avoid it in the future.
•  » » » » » 3 years ago, # ^ |   +4 He meant 5 star rating I guess.
•  » » » » » » 3 years ago, # ^ | ← Rev. 3 →   +11 Hah, I wouldn't ever think that there is ambiguity in my comment =)I meant the problems are superb, like luxury 5 star hotels =) I see what's the problem — in different browsers these stars look differently.In my main browser they are of gold-yellow color.
•  » » » 3 years ago, # ^ |   0 When the system testing begins?
 » 3 years ago, # | ← Rev. 2 →   +17 hack test for problem A (VK Cup): n = 65538 m = 98305 and any edges which unite all 65536 vertices in one component.let x be number of vertices in componentlet y be number of edges in componentWho wrote if (x * (x - 1) / 2 != y) puts("NO") and used int32, failed on this test.
•  » » 3 years ago, # ^ |   0 Yep, or n = 92684 and m = 148290... System test 29 |-(
 » 3 years ago, # |   0 How to solve div2 C?
 » 3 years ago, # |   +2 what's wrong with this output A A A Aa Aaa Aaaa Aaaaa Aaaaa in pretest 1 problem c Div2
•  » » 3 years ago, # ^ | ← Rev. 4 →   +38 Its too vulgar :-P..
•  » » 3 years ago, # ^ |   0 Nothing is wrong.
•  » » 3 years ago, # ^ |   +1 Your solution gives this output "A A A A Aa Aaa Aaaa Aaaa" on my computer which is wrong
•  » » » 3 years ago, # ^ |   0 Thank you
•  » » 3 years ago, # ^ | ← Rev. 2 →   +1 Watch out for Aaaaaaaaaaa, which is 11 characters, any name longer than 10 character is not allowed. I got WA on first try because of this.also your output on the judge is A A A A A A Aa Aa
•  » » » 3 years ago, # ^ |   0 Thank you
 » 3 years ago, # |   +67 On task D, div 1, my solution in O(n2) got AC, weak tests :\An example on which I get TLE: n = 3·105, ti, j = (i+j % 2 ? -j : j+1)Link to solution
•  » » 3 years ago, # ^ |   +31 It seems that there is more than one O(n2) solution that got AC. I tried really hard to prepare tests in this problem but I didn't succeed. I'm sorry for that.
•  » » » 2 months ago, # ^ |   0 Although the contest is over, can you add that test after the contest? (for people who solve the problems in the problem set)If possible, please add this test case too (which will make the naive DP solution (n^2 states) described in the editorial visit O(n^2) states. (The "next rectangle" index for the first row jumps n/2 steps, the "next rectangle" index for the second row jumps 1 step)
 » 3 years ago, # |   +14 Tnx for the not copied contest :DWhen are we able to solve the problems on problemset?
 » 3 years ago, # |   +3 If I took 401 place but 399 place was taken by two people, will I participate in the 2 round?
•  » » 3 years ago, # ^ |   +3 no
•  » » » 3 years ago, # ^ |   +3 Но. если у кого то место<=400 , определяется плагиаризм тебе повезло!
•  » » » » 3 years ago, # ^ |   +3 А попроще?
 » 3 years ago, # |   +1 Well, I had some frustrating bugs.
 » 3 years ago, # | ← Rev. 2 →   -7 Could some good soul who knows python please explain why this code gave runtime error in pretest 11 which has n=m=150000?. This isn't the first I've got such an error doing DFS in python. I really want to know as I'm finding it impossible to figure out on my own.
•  » » 3 years ago, # ^ |   +3 Dont paste full code in comments, instead paste link to the code
•  » » » 3 years ago, # ^ |   +3 Sorry my bad.. will take it out..
•  » » 3 years ago, # ^ |   +1 python stack size of quite less. RE is because of Recursion depth limit reach.Similar BFS solution will pass.
•  » » » 3 years ago, # ^ | ← Rev. 2 →   +3 Ahh yes your right! Python stack depth is only around 1000. The correct answer here offers a lot of light. Thanks a lot!..
•  » » 3 years ago, # ^ |   +1 Maybe stack overflow?
•  » » » 3 years ago, # ^ |   0 Yep that was the problem.. Python recursion stack size is small..
 » 3 years ago, # |   +4 Buggy Div2.D !! :D
 » 3 years ago, # |   +13 What a pleasure to solve some really original and less typing problems.
 » 3 years ago, # |   +4 Happiness is getting into the darker shade of blue:)
 » 3 years ago, # | ← Rev. 2 →   +16 wtfis it machine link?
•  » » 3 years ago, # ^ |   +8 look through defines
•  » » » 3 years ago, # ^ |   0 HOW could someone do that !!!
•  » » 3 years ago, # ^ | ← Rev. 4 →   +17 Someone is cheating by using that as second account.Edit:Obviously this guy:http://codeforces.com/contest/791/submission/25623078http://codeforces.com/contest/791/submission/25623055Compare the tokens used.
•  » » 3 years ago, # ^ |   +8 g++ -E and C++ online code formatter to attack it!
 » 3 years ago, # |   0 In Div 2 B, I used the fact that each in each connected component there should be an edge between each pair of vertices. Hence the number of edges given should be equal to — summation x*(x-1)/2 for each connected component, where x = size of the connected component. I used int and got a WA and when I replaced it with long long it got Accepted. Now my question is if the answer has to be "YES " then sum should be <= 150000 (since that is the range of M in the question) so int should suffice then why did I get a WA?
•  » » 3 years ago, # ^ |   0 actually the number of nodes present in a connected component can be of the order 10^5. So if x=10^5 and it is int then (x*(x-1))/2 will overflow. This is the reason why u got WA
•  » » » 3 years ago, # ^ |   0 but then the number of edges required would be > 150000 so the ans anyway has to be "NO"
•  » » » » 3 years ago, # ^ |   0 Why ? take the example of a tree with 10^5 vertices . Therefore edges are 10^5 — 1
•  » » » » » 3 years ago, # ^ |   0 for ans to be "YES" there should be (x*(x-1))/2 edges, which would be of the order 10^10 but m < 150000 hence the ans will be "NO"
•  » » » » » » 3 years ago, # ^ |   0 I got it, what has happened is, that after the overflow the value has become equals to m. I thought probablity of this is too less. My bad luck. :(
 » 3 years ago, # | ← Rev. 2 →   0 @Errichto This question is regarding problem B of div 2.This code in Python generated TLE while the same logic implemented in C++ passed all testcases.Can anyone help me with this?
•  » » 3 years ago, # ^ |   0 Got it. There was a mistake in DFS.Accepted Python code: http://codeforces.com/contest/791/submission/25642361
 » 3 years ago, # |   0 Hello.All my submissions are not evaluated yet. They are showing 'skipped' in my profile. Can I get to know the reason behind this?
•  » » 3 years ago, # ^ |   +2 Most likely, you were disqualified.
•  » » » 3 years ago, # ^ |   0 But why?
 » 3 years ago, # |   +26 It seems like the max rating and the rating graph has been updated, but the actual rating shown in the profile has not.
 » 3 years ago, # |   0 Ahhhhh finally pass problem E. Just a tiny bug in my reference of Half Plane Intersection, which has been used to solve ten or more problems. TAT....
 » 3 years ago, # |   +6 It seems, that Div2C has some duplicate tests in the final test set, most likely due to multiple hacks with same values or something similar.More exactly, tests #41 and #55 as well as #42 and #45 are the same. I guess this is some sort of bug? Probably not only for this problem?
 » 3 years ago, # |   +1 Why is it that the graph and the max ratings have been updated but the present rating has not yet been updated?
 » 3 years ago, # |   0 Errichto Do you really think it's unprofessional to mention the sponsor name in the statement or that's just to match the problem requirments? If yes, why?
•  » » 3 years ago, # ^ |   +5 I think it's fine. If I thought it's unprofessional, I wouldn't prepare such a problem.
 » 3 years ago, # | ← Rev. 2 →   0 I solved 1 problem in this contest and in my "contests" section it's showing +68 and new rating 1034. But in my profile it's showing my previous rating, 966 :(
 » 3 years ago, # |   0 hey folks.... i attended VK cup Round 1 div 2 contest.... before contest my rating was 713 and after the contest i gained +134 Rating Points... and my new rating should be 847 but in my profile it is not shown 847 but shown my previous rating 713... :( :( so i want to why this is happened please someone explain please....
 » 3 years ago, # |   0 so good
 » 3 years ago, # |   0 Problem B 63ms solution :) In each group of friends,if the group is legal,all points should be connected directly between any pair, so just check if the power of point is equal to the groupsize-1 You may form groups by using union-find set Here's my c++ solution qwq http://codeforces.com/contest/791/submission/25794980