<almost-copy-pasted-part>
Hello! Codeforces Round 634 (Div. 3) will start at Apr/13/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 nooinenoojno Stepanova, Mikhail awoo Piklyaev, Maksim Neon Mescheryakov and Ivan BledDest Androsov for help in round preparation and testing the round. Also thanks to Artem Rox Plotkin and Dmitrii _overrated_ Umnov for the discussion of ideas and testing the round!
Good luck!
</almost-copy-pasted-part>
UPD: Also thanks to ma_da_fa_ka and infinitepro for testing the round!
UPD2: Editorial is published!
vovuh logic
vovuh hello , I guess my rating will down to less than 1600,but I've registered before,will I be rated in this case?
I think the you won't be rated in this situation.
I think after rating is updated, you can deregister and register back
I guess you are lucky (?) :D
Wow wow, another Div.3 but this time I will not get rate :D
I good opportunity to get my rating back from today's Div2 lol
What does "open hacking" mean, sorry I am new? How can you hack a solution?
After each contest, there is a time of 12 hrs where if we find someone's solution incorrect, then we can give input the case at which the submission fails, if hacked you are rewarded with some points sometimes.
is there a way to sort solutions by programming languages? Now, I have to go through all the submissions to find Java submissions.
On the right hand side of status page,you can find language option under status filter and select language Java.
status > status filter > languages
1)After this contest (the same for following div.3 rounds and educational rounds), there's a period of 12-hour hacking phase.
That means, you can hack anyone you want(while in normal rounds you can only hack your "roommate" during the contest).
2)If you find something wrong in other's solutions(but passed the pretests), you can give an input which will make the solution fail (wa,tl,...)
In div.2 you get 100 points from each successful hack and lost 50 points from each unsuccessful one
In div.3 there's no prize or penalty for hacks.
What's "roommate"? Sorry, newbie.
In a normal round, you are assigned to a specific room, with ~50 people if I'm not mistaken. During the round, you can attempt to hack their solutions, but only if you lock your own solution first (this is because you will be seeing others' codes, it wouldn't be fair if you could change your own code).
A successful hacking attempt will give you a 100pt boost, while an unsuccessful hacking attempt will take away 50pts from you.
and what does locking the solution mean? If hacking starts after the round then how can one change his code?
Hope it won't go too mathematical ;/ questions about string is more interesting;)
50iq is not bad actually idk
But comparison of other websites code forces server is good
Did you ever participate in codechef cook off or luch time...they can't handle even 5000 participants properly...whereas codeforces handles nearly 20K participants...comparitively codeforces servers >>>>> any other cp server
Can't you guys take it as a meme...
The girl is the middle would rather be saying that "Give the lengthy problem A and engage participants."
Did you ever participate in atcoder contests It servers cannot hold even 5000 participants. Codeforces servers when it is +5000 submissions at time it will get some time but when it is less it works good!
it was just a meme bro... I know CF is really good.. I apologize for posting this...fine?
After every contest i felt disappointed.But believes that practice makes a man perfect. Best wishes for all. <3
Hoping to see "Yet Another Problems".
finally a div 3 contest :(
Can "Hacking A Soluton" also be included in Div 3 ?? Just an idea.
When div3 was first proposed then it was said that a beginner should waste time in hacking instead of solving problem. So contest time hacking is not available in div3 rounds. And there is 12 hours hacking phase for improving hacking skill. But i think 12 hour is too long. It can be reduced.
I think 12 hour just for global, maybe someone finish the problems then have to go to bed.When they weak up, they can hack.
Actually after 6 to 7 hours nothing for hacking. Almost all the hackable solution are already hacked in this time.
Thank you, as always I am excited for another div.3 :)))
Hello, is this rated?
rated for div 3(below 1600 rating)
I'll try to skew my propagating wave at least this time. Pray for strong pre-tests
lol
Problem set in recent codeforces contests seems tough for me. Looking to get some easier problem this time.
hopefully some short problem sentence
Why setter is yelling at tester?
Because of my invaluable suggestions :)
I think you should explain about your suspicious behaviour in the past contest. Because it looks like you've cheated before.
your suspicious behaviour
Apologize in advance if I mistakenly understand it.
I am not being rude, but I don't think so I need to explain you anything :)
The thing is, your code is totally same with another code in the past contest.
I don't want to be an annoying guy who repeat one thing everywhere. I just want to know what happen. If it isn't a cheat, I will sincerely apologize. If you've already be punished for that, I won't mentioned it anymore.
I will keep annoyying you if and only if you really cheated and haven't been punished so far.
Well You can see my rank in this contest :)
ok, got it.
Hoping for stronger pretests in A. Got hacked (unfortunately) in the educational rounds and it had been a while since I had solved 3 T_T and I missed it thanks to the A.
You should be more careful with some corner cases
That's more important and valuable than strong pretests.
good luck and high rating bro
00:01 nice network
You just risked there by some basic observation, I don't think that on minute 2 you were able to prove your solution. So don't be happy by that.
I hope to see Math problem~~
you make me a green i dare you
good luck
Hope the system test won’t be too long.
It's good to see vovuh back but I expect that codeforces will do something in order to handle such large number of submissions during the contests and I guess this time it won't be queueforces :)
I hope that the gap between the div.3 rounds will be decreased , its the best round
Hope my rating will go up.
I'm so vegetable......
Hope the statements will be shorter -_-
Thanks vovuh again for bringing such contests in this pandemic situation we highly thanked to codeforces and its community for bringing such contest in this period to make us somehow busy and involved.Thank you codeforces community !
The color spectra doesn't quite match Codeforces band XD
I am becoming
ExpertBlue after this round.I don't think so
Is it rated?
For you, yes. For expert or more, no.
Isn't it more logical to not allow experts or above from submitting solution for first 20 minutes rather than making problem A hard/confusing for div3 rounds atleast. Many participants don't even submit solution if they find problem A confusing or tough for it's bracket.
My rating is just 1600, so helpless
Good Luck Have Fun!
what happens when i hack my own solution ?
If successful:
You will lose a problem solved
If unsuccessful:
Nothing changes.
So it's obviously meaningless to hack yourself unless you've found some mistakes in your code after the contest.
What you see:
Codeforces Round #XYZ (Div. 3)
What I see:
Another unrated contest :'(
architb_12 why the hell are u giving this contest ,if u have such a mentality,and posting this nonsense doesn't show that u are cool
pizza_hut what mentality? I am just saying that I am sad that the contest is unrated. It is much more fun when it is rated. What is your problem with that?
architb_12 whats the problem when contest is rated for 70% of users on codeforces
I think you have completely misinterpreted me. I meant that it is more fun to give a contest when it is rated for you.
hey, first of all, learn to give respect to others (doesn't matter he is highly rated or low) and don't talk rudely. He was just saying that this contest is unrated for him and of course this was unrated for him because he has done efforts to be at that position where Div3 even Div2 is unrated for him. So, please don't post such non-senses. Even today tourist gave the Div3, can you stop him...No nah?
Can the frequency of Div.3 contests increase ?
This is what happens when Tourist attends Div 3.
How can one read the problem, figure out the solution and write down the code in 1 minute.....
Think about reading 3 problems, figuring out solutions, coding all 3 of them and getting them accepted in 3 minutes.
He doesn't read the problem, nor do any other red coders. They go straight to test case, find a pattern, and implement.
Unbelievable!
If problems see tourist comming they give up and solve themselfs.
You are very humorous
lol
Actually tourist has solved the problems before they solve themselves:)
technically, it was 36 seconds
answered here
What's the point of having 50000 testcases, if giving verdict still takes you > 10 minutes?
I'm sorry, what about you? I don't see any of your submissions were judged for more than 1.5 minutes.
F took > 10 minutes. It really didn't affect me. I understand its because these rounds don't have pretests, I guess.
Wow the servers have REALLY IMPROVED. MikeMirzayanov orz
tourist solved 7 problems in 22 minutes and still atheists exist. orz
A nice and balanced round !!
How to solve E2 and F?
Easy +rating, nice contest)
I was logged out suddenly while submitting please solve this problem it occurs most often during contests with me!
How do you do E2? I spent like 45 minutes binary searching for the second endpoint(and I think it was probably the right way since you have blocks of xyx or just one large block of length x), so you can use binary search to find the optimal value for the second endpoint, but it wouldn't work.
EDIT: Just realized that I thought a_i<=26 for E2 (as it was in E_1) so that's why I was getting wrong answer
Observation:
The contribution of a number is limited by number of occurrences of prefix and number of occurrences of suffix, In other words, if you have a prefix of 7 occurrences and suffix of 2 occurrences, Then you're only contributing to the final answer with just 4(2 from the left side which has 7 occurrences, and 2 from the suffix), So contribution = min(prefix,suffix) * 2.
Knowing the above, We can just try for each number x, A possible prefix that has 1 occurrence.. 2 occurrences .. 3 and so on, you can fill the middle with an element that occurs the most, you have only 200 distinct element, just go over them all.
Oh my this is neat. I mean the idea about checking only prefix and suffix. Thanks!!
Video Editorials + Facecam
How to solve E2. Any idea??
store position of every element in a vector v[203].for each number between 1 to 200 run two pointer from start and end of its position vector and between them find maximum time occuring integer frequency using prefix sum 2-d array.
can you elaborate on the prefix sum 2-d array? how are you storing in them?
more than 60k accepted submission and aprox 26k participants.wow amazing.
Why i can't hack someone? It's write me "Illegal contest ID" or "Неверный идентификатор соревнования"
Hack via status page,not standing page
Thank you very much :)
You're wellCUM! ^_^
Fast servers but speedforces :(
How did you all solve E2? I used Mo's and I wonder if that was overkill.
Oh man the alphabet is only size 200, Mo's was definitely overkill.
Yeah, I used Mo's too, don't know how others got that right
Here's my approach:
aaa...aaa
)...bb...
) between $$$i+1$$$ and $$$j-1$$$ using a precomputed table of counts for each prefix and each symbol.middle part score + 2 * symbol count
.$$$O(n\cdot k^2)$$$ in total, but the operation #3 is rare in practice, so it passes the pretests ¯\_(ツ)_/¯. Got MLE on the first attempt though, lol. Don't define int long long where it's not necessary.
Excellent solution. I thought O(N * K^2) would fail, but yours is super simple, so I guess it has a very LOW constant factor.
That is $$$O(n \cdot k)$$$ in total if you have position pre-calculation, not $$$O(n \cdot k^2)$$$. That is because $$$\left(\sum \text{occurrences of symbols}\right) = n, \text{not } n \cdot k$$$.
but for each prefix and suffix of given size and letter, he is going over all 200 letters to find biggest centre block. So I think its really $$$nk^2$$$ with small constants.
I think prefix table can be calculated for
vector<int>(200)
, then the max_element(for "b") can be found inO(k)
time. Since we traverse overO(n)
two pointer pairs(i,j)
, this gives total timeO(nk)
.FYI this approach is almost optimal; but at step 2 you should initialize $$$i$$$ and $$$j$$$ to the two middle occurrences of the symbol (if the amount of symbols is odd, just ignore the middle one), then move them away from each other, towards the end.
The benefit of this is that you can start with an empty set of frequences $$$f[200]$$$, then initialize that to the counts of each symbol between $$$i$$$ and $$$j$$$. Keep track of the most frequent symbol whenever you update ++$$$f[\cdot]$$$. And then do --$$$i$$$, ++$$$j$$$, and update $$$f[]$$$ as you go. You can always keep track of the most frequent letter in the middle part this way, and complexity is $$$O(n)$$$ because you do ++$$$f[\cdot]$$$ at most $$$n$$$ times.
For E2, I coded a
O(nklog(n))
time algorithm using the same idea as yours except using binary search instead of prefix sums. I realised that the complexity is too large. However, for testcase 9, which has 134 repeated 2e5 times, my solution should simplify down toO(nlogn)
. However, when I ran it on my system, it took more than 30 seconds and gave me TLE on codeforces. Can you please help? Here is my submission https://mirror.codeforces.com/contest/1335/submission/76624993I also tried the same thing but got tle on test 15 .76625017
Later i think to remove binary search and precompute freq table but memory limit exceed on test 9 .76625886
can anyone help ?
Replace ll from int in your program
wtf , It worked .
how they can set such a memory limit.
E2 complexity analysis:
$$$\displaystyle \sum_{c=1}^k freq_c \cdot k = \displaystyle k \cdot \sum_{c=1}^k freq_c = O(k \cdot n)$$$
Sum over $$$c$$$ for choosing the number in $$$1^{st}$$$ block. $$$freq_c$$$ for iterating over all possible lengths of $$$1^{st}$$$(and $$$3^{rd}$$$) block. Multiplied by $$$k$$$ for choosing the number in $$$2^{nd}$$$ block.
$$$\displaystyle \sum_{c=1}^k freq_c \neq k \cdot (freq_c)_{max} \neq k \cdot n $$$
$$$\displaystyle \sum_{c=1}^k freq_c = n $$$
What is Mo. I thought of doing binary search but failed to do so.
https://cp-algorithms.com/data_structures/sqrt_decomposition.html#toc-tgt-4
Could you please explain how you applied Mo's?
The problem can be reduced to answering a bunch of queries of the form: What is the most frequently any element appears in the range [L,R]? If the alphabet is large, you could attack this with Mo's Algorithm.
Unfortunately, it slipped my mind that since the alphabet is so small (only up to $$$200$$$ symbols), you could more simply create 200 prefix sum tables instead.
I didn't quite understand from your code how you're generating these queries. Could you please elaborate how you're generating these ranges?
I did, but one must be careful to not use long long, since it used to much memory. We have to use a $$$32$$$ bit type.
76620592
My solution is similar to yours but it is giving TLE on test 2. I am not able to figure out the reason.
My Submission
Is Mo's algorithm the only way to do it?
Really good round! I loved problems D and F. Had an idea for F but gave up after 20-25 minutes of implementation after I realised I didn't account for something mentioned in the question. Had about 20 minutes for E1 and E2 (I regret not having attempted E1 and E2 before F). I believe I'd have been able to solve E if I made a wiser decision earlier but shit happens, lol. Also, ideas for E, anyone?
You can enumerate a and the number of a, and then enumerate what's b, it seems 200*200*n, but you can find the really time complexity is 200*n
Keven Can you explain your solution? Is it similar to this: https://mirror.codeforces.com/blog/entry/75908?#comment-602884
200*200*n, first 200 enumerate a, n is the number of a, so first 200 times n is n, time complexity is 200*n
can you explain me why it is not 200*200*n?
I got AC on E1? but i assume that complexity was 200*200*n, now i sent same code in E2 and i got AC
In your solution you have
y = v[a].size() - 1;
which is actually not always n. In fact it would make the make the factor of 200*n to just n.yeap, I already got it, thanks!
In problem F, if N and M's range can be confirm instead of N*M <= 1e6 will be better
How do you guys solve D?
I finally figure out that we must change 9 postions which are respectively distributed in the nine squres.
So I enumerate the column and the row (maybe like N-queen Problem) and get the answer....
Author's solution is to replace all 2 with 1.
Why 2?
You can take any 2 numbers.
wow that's innovative, instead of figuring out which cell to edit.
Yeah, I also changed every 9 to 8. It took just less than 4 minutes for me to solve this. Fastest D problem ever for me.
You only need to make changes such that each row, col, block have at least two same elements. If you make changes at indices (0-based) (0,0), (1,3), (2,6), (3,1), (4,4), (5,7), (6,2), (7,5), (8,8), you end up covering all rows, cols and blocks. So, make the required changes to those indices => problem solved.
I did the same xD
Shhh, don't post anything remotely related to the word "same" :p They'll think we cheated
lol should I delete it?
a[1][1] = a[2][1], a[2][4] = a[1][4], a[3][7] = a[2][7], a[4][2] = a[3][2], a[5][5] = a[4][5], a[6][8] = a[5][8], a[7][3] = a[8][3], a[8][6] = a[7][6], a[9][9] = a[8][9] This was my idea. Later, got that replacing all 2's with 1's was good enough.
Funny way to solve F without detecting cycles: notice that if two robots get to the same cell, then they will always move to the same cell from then on. This means that we can find for each cell where the robot starting in that cell will be after some $$$2^{22}$$$ moves using binary lifting.
This is author's solution :)
Hi, this is my first contest. Can you please share the link to the author's solutions? I am not able to locate it. Thank you!.
I'll post them with the editorial. Please, be patient.
The contest was not at all balanced, I must say. Even you can see the rating of people and compare the no. of questions they solved. Starting 4 questions were not of much use as almost half of the contestant solved the first 4. Also, question D looked like it was meant for April Fool's 202 but was posted by mistake?
Why do you posting this from fake account? :)
You ignored my comment... What am I saying wrong according to you? You should accept the mistakes. :)
Which mistakes? Prediction mistakes? Maybe, I need to clean my magic ball to see the future better.
The only (and very doubtful) "mistake" here is the "gap" in $$$5400$$$ accepted solutions among official participants (which means that E1 was solved by 1/4 of people who solved D). This is not a big gap.
I could show you examples of really big gaps but I don't think I need to prove you something anymore. If you don't realize that this prediction with difficulties is good enough, I have nothing to say to you.
And, if you post your opinion from fake account, it seems like you don't want to anybody know who are you actually :)
Yeah, you are right. As far as I remember all the Div.3s I have given were perfectly balanced and excellent problemsets and all of them were made by you:)
Well, I disagree with you :) Most times there are some mistakes that you couldn't notice, but this time the contest went fine. There also were some minor mistakes but not as fatal as usual. This is the rare case when almost everything is fine and I'm glad to see that.
Thank you for the round! No queue, no weak pretests.I found problem E2 very interesting and problem D a bit hard for me but interesting too.Please make more div 3 contests, we really appreciate you :)
That's actually a really cool approach. Have you also tested a cycle-based solution? I am trying to implement a fairly straightforward search and it keeps running out of memory.
Looking at 32 pages of MLE results in Status, I think the memory limits for E and F could have been a little bit higher.
The approach with extracting cycles and doing some dp is much harder to implement, so I didn't even tried to do that. I could but didn't do this.
I ended up flipping the dimensions if N > M, and surprisingly this helped (76628096). According to the test results, it uses up 254.5 out of 256 MB, lol.
Well, I'm sorry to hear that. I really thought to increase memory limit, but my solution uses ~200MB (the two-dimensional vector of size $$$nm \log nm$$$) so I thought that the 50MB will be enough (because this is the only array which should have such size).
Hello ; can you please explain me why does N*M*M solutions pass for problem E2 ?
tourist has written a code with that time complexity ; here is his submission — https://mirror.codeforces.com/contest/1335/submission/76520445
And I am not able to understand how does that happen ; curiously ; I even did try to check the test cases ; and I see test case 9 which should break such solutions.
So clearly ; I am not understanding something ; can you please help me with this.
Thanks !
The solution of tourist has the complexity $$$O(nk)$$$ where $$$k$$$ is the size of the alphabet. If you take a look at the two outer cycles, you can notice that they just iterate over all characters of the string and this sum is obviously $$$n$$$.
Maybe, when I post the editorial, it will be more obvious to understand why this is $$$O(nk)$$$. Just be patient.
Oh ; I see ; I apologize for being a bit impatient ; and I thank u for the reply.
I understand the complexity analysis of that solution now ; Thanks !
vovuh please look at my submission for E2 this it got MLE 252700 KB but now I am submitting it got accepted this with 252800 KB (more space than previos)... :'( and because of that I was not able to submit E1 also during contest...
very sad!!! :'(
Thanks for teaching me something. I learned binary lifting for RMQ/LCA but didn't consider reusing the table for k-th ancestor queries.
I got E 5 min late -_-
Nice round!
help me please which problem i have with this code on problem B? https://mirror.codeforces.com/contest/1335/submission/76592383
You have taken 'g' twice in your array
How to think fast like tourist... :(
When he was solving each question in about 1 minute, I was drawing on mspaint.exe and looking for the solution :)
practise,practise and practise .smartwork +hardwork
In normal practice I could solve A and B with 1000 difficulty in less than 2 hours. :/
Probably my brain crashed because of taking too much practices on last night lol...
Do you know this website? https://vjudge.net/ I think is a good sit for practice. There are all kinds of projects to practice on.
Well pen-paper seems more reasonable for me
I have my own drawing pad & stylus pen so I don't wanna waste them too haha.
the best contest ever for me
Problem D
Can somebody please help me in finding out the problem of this submission. Apparently, the inputs are not being properly taken, instead some absurd garbage values are being shown. I was stuck with this for the last 40 minutes of the contest and still could not figure it out.
Input is not n*n integers, it is n strings in n lines.
You can't take the input as int sudoku[10][10]. Make it char sudoku[10][10] and change your code accordingly.
cin >> sudoku[i][j]; this takes takes whole row as input. Not a single integer
https://mirror.codeforces.com/contest/1335/submission/76590246
https://mirror.codeforces.com/contest/1335/submission/76509810
both solutions are identical and the person who submitted it from different accounts, intentionally did so to hack (and get points if hacking gets you extra points, not sure tho) !
Maybe that's the reason why he's still gray.
Successful Hacks don't change anything except the victim will lose a problem solved
Hacks with this method are......meaningless, honestly
people making such D should be banned from making future contests
Can you ban MikeMirzayanov?
People making such comments should be banned from making future comments
I did read the "you can change any..." as "you can swap any numbers in the grid". Still have no solution for that problem.
you can see my solution i also thought the same
https://mirror.codeforces.com/contest/1335/submission/76594021 my sol
Can you please make some better to and provide them to problem setters so that the people who works so hard for making this problem can take some rest.
Haha , why should i do that. I only want to solve problems not make them. But if some problem is bad and i say that it's bad dosen't mean i need to make problems.
Here is a Chinese proverb for you:“你行你上啊”. no can no BB!
It's your problem...
2! According to me it should be 6!``
1st and 3rd part must have the same length x
1 1 1 1 1 is the longest palindrome. What is your 6 length palindrome?
Damn! I missed x==x :/
I was also stuck at this point for half an hour
Number of a's on both sides of b's has to be equal as per the problem.
It should be 5. The longest 3 block palindrome here is 11111
1 1 1 1 1 is the answer and here both x=0,y=5,x=0
basically every answer should be a palindrome with max 2 types of elements, and the 2nd type of element should be sandwiched b/w 1st type of elements , hope it gives you a little idea ! PS: thanks ashkANOn for pointing out the mistake.
For 1 1 1 1 1 x=0,y=5,x=0 i think
It's really bad for me. 1335B - Construct the String said that " to construct a string s of length n consisting of lowercase Latin letters such that each substring of length a has exactly b distinct letters. " e.g. For test case: n, a, b are 22 17 12 my code output: abcdefghijgkkkkkkabcde
is it wrong?
Yes it is wrong for the prefix of size 17. I think you are trying to print this "abcdefghijkllllllabcde".
Can someone show me your solution to C?
My solotion is to binary-search the answer and check whether it is legal.
But my solution runs nearly 900ms.
Is there some easier and faster solutions?
Here. Mine runs in 61ms. Idea could be figured from the code but hit me up in PM or here if you need help understanding something.
Can you please briefly explain your solution?
I have a little difficulty in understanding it....
I can explain mine if you want to :)
There is a greedy aproach to this. We want to maximize the number of people in both teams. So we want to check the maximum number of students with the same skill (let's name it max_same) and also the skill (let's name it num). After that, we want to check the maximum number of students with different skills, different than num (there is the risk to put the same student in 2 groups). Both of these can be done with a simple sort on the initial vector and a linear scan. Now, if the absolute difference between the number of students between the 2 groups is at least 2, then we can transfer one student from the second group that we didn't take previously to the first to maximize the number of different skills. The answer is the minimum between the number of students between the 2 groups.
Code: 76607507
Thank you, but I have finished the problem in 62 ms(^v^)
Hi, can I be unrated for Codeforces Round #634 (Div. 3). Reason is with Problem D with Java. I submitted the code https://mirror.codeforces.com/contest/1335/submission/76566765 during the contest without PrintWriter but TLE'd on test case 2, although my solution is O(81*10^4) which should be under the time limit. After the contest I submitted the exact same code with PrintWriter https://mirror.codeforces.com/contest/1335/submission/76614841 and got AC. @vovuh vovuh
Best contest ever for div 3. Thank you god vovuh very much and hope everyone can become expert !
I didn't read D correctly and thought you needed to keep the "sudoku structure" ( just swap numbers around, no replacing ), so I came up with a backtracking solution and I just kept wondering how was it a div3D and how did so many people manage to solve it lol.
Strong Pretests and Intersting Problems, Fast Test and Good Network.
Thanks to vovuh & MikeMirzayanov
What is the intended complexity for E2?
O($$$N$$$ * $$$200$$$)
The complexity of your code is O(N*200*200). Many other solutions with this complexity have passed. I think the best we can do O(200*N*log(N))?
I believe my code is O(200N):
https://mirror.codeforces.com/contest/1335/submission/76611393
See my reply below. It can be done in O(N*200)
O(200*200*nlogn)
Not for E2
I can be done in O(N*200) analyzing from the "center" for each distinct value. Centers for value V means two distinct pointers (a, b) where the amount of V before a is the same as the amount if V after b. Then keep jumping a backward and b forward, both at the same time, but the jump is actually to the previous/next V value. While you do this, count the frequency of values in the middle of a and b, and keep the one with maximum occurrences, and add that to (amount of V before a)*2 keeping maximum for each time you move the pointers. This is linear for each value V
Nice solution!, initially I had thought of this method, but I tried to move the pointers closer instead of farther and it led to some complications in maintaining the maximum
Ah! I realise now that what I did was itself O(200*N). I did the complexity analysis wrong. Thanks!
Where can I report this self-hack? https://mirror.codeforces.com/contest/1335/submission/76616926
And then there's this one: https://mirror.codeforces.com/contest/1335/submission/76618522
no need to report.
There's no prize for such successful hacks
Also there's no Best Hacker Rank in div.3, only in Educational Rounds.
In F,Why did you keep 1 as white and 0 as black ?
If your intention was to delay submission time by 2 minutes, congrats :D
Could you please help me understand why my code for Problem C doesn't work? It seems pretty straightforward and I have seen other solve it my way, however my code fails on test 4. I have no idea why. Here is my submission.
I don't understand your code, but it seems to fail on the case "1 1 1 1 1 1 1...". The answer should be taking the whole array (n)
Don't compare two Integer(object type) using ==. It compares reference not value.
Thank yo soo much for your help. I used the intValue() method when comparing and my code is now working. Thank you so much for your help. Here is the working version.
I am getting automatically logged out when i press submit button for the first time in a contest.This is happening regularly with me from past 5 to 6 contests. I am still a specialist and those extra 15-20 seconds don't matter to me right now, but this might be a bug in the server that may need a correction. Please have a look MikeMirzayanov. Thanks!
Maybe your cookies are not working.
I have faced the same issue when clicking from the problem itself instead of going to the submit code tab
I'm also facing some problem while submitting my first solution of previous 2-3 contests. I get some html 403 forbidden error with some token value!
In E1 test 2 set 107 is "4 1 4 1" and the expected answer is 4?
Am I missing something?
I think that the counter in the evaluator that displays the WA test number is off by 1
No, I'm pretty sure that's the line. I made a submission that outputs -1 at 107th item, and it gets caught as -1.
https://mirror.codeforces.com/contest/1335/submission/76621065 wrong answer 107th numbers differ — expected: '4', found: '-1'
Then I submitted an app that prints only the 107th line's input. And it is "4 1 4 1".
https://mirror.codeforces.com/contest/1335/submission/76621266
It can't be 4.
It prints all the inputs starting from the first; 4 1 4 1 is actually the first test case.
On 107th iteration you are taking input for 1st time. It is taking 1st case as input not 107th case.
Is that input visible from the test case?
Why are some of the submissions containing this part?
if (t == 'something') cout << "OK" << endl;
Does it give any benefit?
They do that so they can get easy hacks from another account
So, somebody want to explain 1335F - Robots on a Grid?
As I understand we need to find the loops, and the size of the loops. We can fill all cells of the loops with robots. Then, there are paths leading into the loops. We can use robots from white loop cells and place them on black into-pathes cells.
How to implement that?
A very strange thing happened with me during the contest. My code for problem E was running perfectly fine on code blocks but was showing a run time error on test 1 when I submitted. After the contest when i changed ll(which was defining long long int) to int then the solution was accepted Could anyone help me with this.
Code which was showing run time error : https://mirror.codeforces.com/contest/1335/submission/76603369
Code which got accepted after the contest : https://mirror.codeforces.com/contest/1335/submission/76621202
You might get an unexpected high value here if size() returns 0, since it is unsigned.
Look at this code.This guy added a special test case in his code just to hack himself later. https://mirror.codeforces.com/contest/1335/submission/76620858 I hope the authorities will look into this matter.
For problem E2, memory of O(2*N*200) gave MLE, but O(N*200) passes. Can anyone explain the reason. MLE: 76596543 AC: 76621338
Maximum N is 2e5
2*2e5*200=8e7,an integer takes 4 bytes, so the total space used is 3.2e8 Bytes
The limit is 256MB,1MB=1024KB,1KB=1024Byte,so the space limit is 256*1024*1024=2.6e8 Bytes
Obviously 3.2e8 is larger than 2.6e8.
Now i understand. Thanks.
tourist in Div3 remembers me of lightning mcqueen in thunder hollow
What type of contest was this? I feel this round is more of a typing round. I know it is a div3 contest but it was not meant to be conducted so easy so pls set some good problems next time in div3 too.
Couldn't agree more. Div 3 rounds used to be fun but this wasn't. The contest gave atcoder beginner contest feels.(Especially D problem)
Yeah, u are right!!!
kaneki_007 Am I right in assuming the reason you didn't solve E1, E2 and F despite the contest being so easy is you got bored by how easy they were and left?
P.S. Please be more respectful to problem setters they put in a lot of effort for seemingly simple problems as well.
Yeah, man, u are right. Thanks for correcting me:):)!!
Nah, you can feel TypeForces Rounds whenever they happen. This round was pretty easy tbh (okay, vovuh, don't make the next round too hard tho :p). A was one liner, B can be done in 8-15 lines, C can be done in 5-15 and D can be done in 5-15. I tried F but messed up (50-100 lines seem to be good). E can be done in about 50. Considering most people solved A-D, 50 lines of code is pretty easy.
It's not about the length of the code, it's about the techniques and topics needed to solve the problems. I found E2 and F really interesting problems
My code fails for input #633 in test case2 for problem C? Can someone suggest what is the problem? Here is my code: Code: https://mirror.codeforces.com/contest/1335/submission/76603660
Please do not paste your code here. Instead, paste a Pastebin or Ideone link of the code in case you have any query.
My solution to Problem D:
Just replace all '2' into '1'.
i did exactly same!
can u describe in words ?
It is not necessary to keep the amount of each type number unchanged, so just repalce all '2' to '1' is okay. Because it is a sudoku, each row, column and block has exactly one '1' and one '2'.
Any reason why unordered_map solutions not getting hacked today?
I am not able to figure out why my solution is giving TLE on test 2 though my idea is similar to most of other people's. My Submission
I'm pretty sure it is due to memset in cnt array. Imagine you have 10^4 tests and you memset all the array in each one. That will for sure get TLE. You just need to clear positions you used, not everything from 1 to 2*10^5
Yes, it worked. Thanks for your help
i am new to codeforces so i have a doubt . Will i get penalty for wrong submission if i could not solve that problem but i submitted too many wrong solutions??
No brother
What this error mean?? I ran my program on different editors,they gave answers correctly for 1st case but codeforces isn't
Diagnostics detected issues [cpp.g++17-drmemory]: Dr,2020-04-13.M Dr. Memory version 1.11.0
Dr,2020-04-13.M Running "program.exe"
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
C:/Programs/mingw-w64-7/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/debug/vector:417:
Error: attempt to subscript container with out-of-bounds index -1, but
container only holds 3 elements.
Objects involved in the operation:
Dr,2020-04-13.M
Dr,2020-04-13.M NO ERRORS FOUND:
Dr,2020-04-13.M 0 unique, 0 total unaddressable access(es)
Dr,2020-04-13.M 0 unique, 0 total uninitialized access(es)
Dr,2020-04-13.M 0 unique, 0 total invalid heap argument(s)
Dr,2020-04-13.M 0 unique, 0 total GDI usage error(s)
Dr,2020-04-13.M 0 unique, 0 total handle leak(s)
Dr,2020-04-13.M 0 unique, 0 total warning(s)
Dr,2020-04-13.M 0 unique, 0 total, 0 byte(s) of leak(s)
Dr,2020-04-13.M 0 unique, 0 total, 0 byte(s) of possible leak(s)
Dr,2020-04-13.M ERRORS IGNORED:
Dr,2020-04-13.M 2 potential error(s) (suspected false positives)
Dr,2020-04-13.M (details: K:\invoker-prod\work\codeforces6\60c583d1d5042c09b8b90fe60fe5fe0b\check-acfb434e06065bfe7c8a7fcb2d8ca975\run\DrMemory-program.exe.3432.000\potential_errors.txt)
Dr,2020-04-13.M 22 unique, 26 total, 39452 byte(s) of still-reachable allocation(s)
Dr,2020-04-13.M (re-run with "-show_reachable" for details)
Dr,2020-04-13.M Details: K:\invoker-prod\work\codeforces6\60c583d1d5042c09b8b90fe60fe5fe0b\check-acfb434e06065bfe7c8a7fcb2d8ca975\run\DrMemory-program.exe.3432.000\results.txt
Dr,2020-04-13.M WARNING: application exited with abnormal code 0x3
can someone plz explain the approach for E
Search in this blog, there are discussions about it: https://mirror.codeforces.com/blog/entry/75908?#comment-603025
in the question it is given that distinct characters is at most 2 , so u can run two loops of 200 for all combination and make resulting sequence using index of those numbers which u can compute while taking input itself . The problem reduce to a sequence of 2 distinct numbers and u can solve using two pointer method . for i==j ans will be size of index of that i /j .
I am not able to figure out that why is my anti sudoko code not working. Please help me.Link to the code:https://mirror.codeforces.com/contest/1335/submission/76592951
Your code is correct for a single test case, you simply forgot an additional loop: https://mirror.codeforces.com/contest/1335/submission/76642028
https://mirror.codeforces.com/contest/1335/submission/76641997
This is E1 problem Can anyone give me the test case where my solution fails. gfonn ZsibbadtKubikus
1 5 1 2 1 2 1
5
It's not correct. Make sure, that you understand the problem.
1 1 2 1 1
What do you mean?
this is three block palindrome of length 5
I mean
1\n5\n1 2 1 2 1
after every 12-hour phase of open hacks. Sever gets disturb why?
If all my solutions are correct, that is, they are not hacked, how can my rank decrease? After standings were frozen just after the contest, it was 1990 and now it's over 2200.
Probably because successful hackers get extra points.
Successful hacks do NOT give the hacker extra points in div.3 and educational rounds
2200 / 17000 all contestants, i guess you will increase a bit, good luck !
Probably you disclicked "show unofficial" button.
Sometimes this feature doesn't work properly and some unrated participants mistakenly appeared even you don't want them to appear(unrated participants aren't official participants)
Rank 1990 is the real ranking(without unrated participants) and 2200 is not(with unrated participants)
(That's my guess)
If you clicked "show unofficial" button, then maybe virtual participants affected your standing.
2200 is the rank among all participants. It is around 1100 only for Div3. What's strange, both of them increased after the round. xD
good luck for us
How i can solve (problem E) by dynamic programming
when the ratings will be updated for this round?
after the systests.
Systest will begin soon
thanks !
It's my first time to read the comments even I've been here for 15 months. I just found the comments section so interesting. I'm going to come here every time. lol