Hello Codeforces!
flamestorm, MikeMirzayanov and I want to invite you to Codeforces Round 817 (Div. 4).
It starts on 30.08.2022 17:50 (Московское время).
The format of the event will be identical to Div. 3 rounds:
- 5-8 tasks;
- ICPC rules with a penalty of 10 minutes for an incorrect submission;
- 12-hour phase of open hacks after the end of the round (hacks do not give additional points)
- after the end of the open hacking phase, all solutions will be tested on the updated set of tests, and the ratings recalculated
- by default, only "trusted" participants are shown in the results table (but the rating will be recalculated for all with initial ratings less than 1400 or you are an unrated participant/newcomer).
We urge participants whose rating is 1400+ not to register new accounts for the purpose of narcissism but to take part unofficially. Please do not spoil the contest for the official participants.
Only trusted participants of the fourth division will be included in the official standings table. This is a forced measure for combating unsporting behaviour. To qualify as a trusted participant of the fourth division, you must:
- take part in at least five rated rounds (and solve at least one problem in each of them),
- do not have a point of 1400 or higher in the rating.
Regardless of whether you are a trusted participant of the fourth division or not, if your rating is less than 1400 (or you are a newcomer/unrated), then the round will be rated for you.
Many thanks to the testers: sandry24, SlavicG, tibinyte, Gheal, qwexd, haochenkang, TimDee.
We suggest reading all of the problems and hope you will find them interesting!
Good Luck!
UPD 1: The contest is delayed by 15 minutes.
UPD 2: The opinions of testers about the order of problems are very contradictory. Please do not rely heavily on the order of problems in the round and read all the problems. Good luck!
UPD 3: Editorial is out!
As a tester, I highly recommend everyone to participate <3
As a contestant, I highly recommend you not to test. bad pretest :(
As a participant, I have participated.
You forgot to write base case my man!
How tf did you do this
Why did you put a Div.4 contest on Tuesday? It would be better if it was on let's say, Sunday because Div.4 contests always have a ton of participants. This way a lot of people won't be able to participate because of their obligations.
And virtual participation is just not the same as live participation because you can see how many people solved each problem till the end of the contest, solutions etc.
I am not writing this because I am mad because I won't be able to participate in the contest (in fact, I will be able to participate) but because a lot of people won't participate because the contest is on Tuesday.
MikeMirzayanov or whoever decides the day of the contest
This is the same as saying "Why is there a div 2 on Thursday?". However, I haven't seen any contest being downvoted just for the day on which it will take place and also a div 4 round may be really good for low rated people to boost their CP confidence through educational problems.
Strange. Why all of the commments are downvoted???
The comment is hidden because of too negative feedback, click here to view it
look at my icon
You almost got me, unfortunately my wifi sucks so the video didn't load
Ha! YouTube ads saved me from that clever trick! Thx youtube!
Expecting some intresting problems
As a tester, I don't like sausages.
As a tester, I disrespectfully disagree with your opinion. Sausages could have increased round quality so much.
As a participant (out-of-competition), why?
they hate a user with the name andrewtate for no reason just because of the name. god these people
Div 4 arrives... Every Specialist be like: First unrated contest for me!
My first unrated contest
:(
As
The Timur
a tester, mesanu should add me in this blogpost.
when will ratings change
When I will decide.
Now I don't want.
TimDee
What's wrong with the people who are downvoting every single comment? Is everyone supposed to not like these rounds just because you don't? This community is weird
Particularly liked the part about urging people not to register new accounts solely for narcissistic purposes =)
Damnn! 5000+ unrated accounts are participating in this contest, isn't a huge number? what do you say?
how did you count?
link
The standing will probably look pretty weird Edit: Forgot about the trusted thing. Sorry..
Only trusted participants are shown in standings.
Is the starting time changed?
Yes
Yes~10 minutes
Any reason for delay of 15 minutes?
This delay is a complete waste of time coz can't do anything good in this delayed time
You can downvote my comment meanwhile
Now most people don't waste their time and started downvote your comment ^^
Why contest postponed?
Hope at least today I won't see the grid.
Just look at problem F...
My first coding competition ever! Kinda excited
As a tester (I really tested it tonight!) I updated the post with the following text:
Thank you for this contest!
Favourite problem is E it is simple to understand, but it isn't easy.
Nice Contest!
Wtf problem F sick implementation?!Stop proposing this kind of problems!
it's not at all a bad problem for Div4. If you find there are lots of if-else, maybe you need to look for better observations.
how to solve E?
I don't want to spoil the whole solution ... so I'll give hints since height and width of rectangles are under 1000,
hint: use a matrix such that matrix[l][r] = Area of all rectangles with height <= l && width <= r.
Basically a prefix sum matrix.
Contest was fun and tasks were great. Thank you for this Div4!
if anyone is interested, I recorded myself doing all problems
if only for E it was hs<=hi<=hsb and ws<=wi<=wb, it would have been so much easier, well anyway can someone give me a hint, i stored areas of all rectangles , sorted them , stored prefix sum array, then searched idx_left=upper_bound(hs*ws) and idx_right=lower_bound(hb*wb)-1 on sorted areas, then got the sum with the perfix sum array, can i tweak this to fit the hs<hi<hsb and ws<wi<wb constraints? also brute force gave me TLE X_X
I just did hs--, hb++
Why this code got runtime error at test 8?
https://codeforces.net/contest/1722/submission/170265006
for each h, can be more than 1000 width
Runtime Error: This line is not true (line 26)
vector<vector> pre(1001, vector(1001));
Solution: You can resize each i in for loop of prefix sum
I found F easier than E. The time limit of 6 seconds on E allowed my O(q*1000*logn) solution to pass.
can u please share your approach for E?
i used binary search four time for solving each query. my code link:https://codeforces.net/contest/1722/submission/170286434
that is not true, because when you search for a range assume the height you got a range from L to R satisfying the condition hs < hi < hb inside this range, you can't search for another range for width because it is not sorted (monotonic function) so binary search fails here.
Think about the constraint of h and w
Code: 170265292
Yea F was actually easy, I'm suprised so less people solved/attempted it
Btw, $$$O(q n)$$$ solution passes too.
no?
Seems like you got hacked!
What is the point of $$$\mathrm{TL} = 6 \,\mathrm{s}$$$ in the problem E? To make stupid brute-force solution pass?
not every language is as fast as C++
I was so close to solving 1722G - Even-Odd XOR (or I at least think so)! Can anybody please explain to me how to solve it?
Here's my solution: Observation 1: If the xorOdd == xorEven, then xorOdd ^ xorEven == 0, which mean xor of all elements is equal to 0.
This leads to observation 2: If n%4==0 then the answer is 0 to n-1. Consequentially, answer for n%4==3 is 1 to n.
if n%4==2 then we take the answer for n-3, then we add 3 numbers of our choice (mine was 2^30, 2^29 and 2^30 + 2^29).
if n%4==1 then we take answer for n-6, then we add 6 numbers.
AC code: 170284159
I did it by adding incrementing numbers (from 0) until the array was length n-3. Then add 1 << 29 and 1 << 30. The final value is then the xor of the entire array (proven to be unique as it has both 1<<30 and 1<<29)
You can check my code if you want
if a == b, then a ^ b == 0
so you just need to make array xor = 0
you can make ai = i
and an = a0^a1...^an
now the only problem is that an can be equal to other value
if n is odd you can set 30th bit to 1 in all numbers except an
if n is even you can set 30th bit to 1 in an and some other ai (if an==a0 choose a1, else a0 for example)
Consider adding pairs of numbers which in binary are like $$$(x)0$$$ and $$$(x)1$$$, where $$$(x)$$$ are any other bits. Note that the xor will always be equal ignoring the least significant bit. When $$$n \equiv 0 \mod 4$$$, every $$$4$$$ numbers we will have the xor of the least significant bit be $$$0$$$ $$$(0 \oplus 0$$$ and $$$1 \oplus 1)$$$, so we see that the xors are indeed equal.
We now only need to reduce other cases to this one. You don't even have to think about it because the sample test cases already give you answers for $$$n = 3, 5, 6$$$, so you put those numbers first and now you add the remaining numbers, starting from, say, $$$20, 21, 22, 23...$$$.
If $$$n \% 4 == 0$$$, I gave the even indices values from $$$1$$$ to $$$n/2$$$ and the odd indices the same value except by adding a fixed high power of 2. The XORs on this high bit position cancel to 0 since there are an even number of odd indices (since $$$n$$$ is a multiple of 4).
For $$$n \% 4 == 1$$$, I did the same for the first $$$n - 1$$$ elements, then added an extra 0.
For $$$n \% 4 == 3$$$, I did the same for the first $$$n - 3$$$ elements, then added three values in which two of them XOR to the third by utilizing two high powers of 2 ($$$10 \oplus 01 = 11$$$, except these are at some high bit positions)
For $$$n \% 4 == 2$$$, I did the same for the first $$$n - 6$$$ elements, then added six values on high bit positions that get canceled out. This took considerably time, but I eventually came up with $$$1000 \oplus 0100 \oplus 0010 = 1001 \oplus 0110 \oplus 0001$$$ (these are four bits at some really high bit positions). I'm quite curious to see if there is a more elegant solution for this case.
170258132
We can easily make the XOR equal in a group of 4 numbers (i, i + 1, 2^k — 1 — i, 2^k — 1 — i — 1).
For example, k = 4: 1 (0001) ^ 14 (1110) = 2 (0010) ^ 13 (1101) = 15 (1111). We match the numbers so that the XOR result has k bits set.
Let's pick k so that 2^k > 200000.
What if the number of elements are not divisible by 4? Then we just need to add some numbers at the beginning of the sequence
How about n mod 4 == 2? Since XOR of the rest elements are equal, then these two numbers should be equal too, which means they are not distinct. So starting with 2 numbers is not possible. But we can start with a sequence of 6 numbers. In the contest I found a sequence which is 1 2 4 6 8 9 using brute force.
Finally, subtract n by the numbers we have added to the sequence, we should have n divisible by 4 to generate the group of 4s.
The initial value i should be at least 10 to be distinct with the starting numbers.
Code: 170265768
Thank you guys.
You can just set the first n-1 values arbitrary, then the n_th value is the xor sum of the first n-1 values. It's almost impossible to hack.
when codeforces post its contest editorial ?
After hacking phase is completed.
Can anyone explain the error in my submission?170267520
You are using char array but you are not resetting them after every test case. So if test cases are like this —
Your code will output No for 2nd test case because strchr(str,"I") will return non null value
Can someone hack my solution for problem G. I think my answer might generate duplicate numbers. Link
It won't generate duplicate numbers. Observe that all the numbers except the number you inserted, at last, are <= 2^30. The last number you inserted xor ^ temp, will actually be > 2^30, so it won't be duplicated
For the problem D i thought of using prefix sum. I was not able to implement it. What you guys did for problem D?
you can use an array of maps 170197935
What made you think to use prefix sum? Anyway, I did it by just storing who wrote which word and then checked how many people wrote it. This can be simply done by using map (I used set aswell, it just made things easier for me)
Edit: I just realised each person wrote only distinct word xD (but my solution also works for duplicates) , so there is no need for set actually, just store each occurrence
170203831
I think D can be done with dp. Here is my solution:
Every next answer is sum of previous answer and max points we can get by changing side of looking of some person. So ans[0] is score that we have in start. Max points we can add is actually biggest difference between points we can get from one person by its current looking and other side looking. So we can just make difference and sort it.
Here is code for my submission: https://codeforces.net/contest/1722/submission/170308742
What is ans[1]?
ans[1] will be max score we can by only one change of looking side(it can be called dp[1]).Voli
najace
can someone please explain how to do E?hints please?
Can you make use of h<=1000 and w<=1000 ?
the only thing that comes in my mind is brute force,i read about about people applying prefix sum but i dont have idea about prefix sum in 2d.
You can make such that for every h calculate prefix for all possible w
thanks alot,learnt something new today.
You're welcome
Why did my code gave WA test 2 on E?
https://codeforces.net/contest/1722/submission/170276269
Edit i saw it =(
Can someone hack my solution of G?
I randomly fill an array with N-2 numbers and then just add two numbers to make XOR's equal. If I fail (i.e. needed number already in the array), I randomly fill the array again.
https://codeforces.net/contest/1722/submission/170260049
.....
Hi, no offence, but how did you solve problem G in just 3 minutes?
I guess it was not that much easy. Even the highest-rated coders took 5-6 minutes as well.
Can anyone Explain Problem D? I used two pointer and greedy approach but don't know why is it failing for some test cases?
Here is my code
Code:
u can see my dp solution on this comment : https://codeforces.net/blog/entry/106422#comment-948238
It can be solved without dp as well
u can see that my implementation is easier than greedy approach.
Actually, I didn't learn dp
Can you implement without dp
yeah
Today is Hacking day
Is there problems with hacking process, no one unable to hack this user for the same problem and it still in queue state?
Too weak pretest for A. :(
Can D done with prefix sum?
Different people said they solved it like that
Hello everyone my solution for 1 problem is accepted during contest but now it's shows its hack and solution is wrong?? What is mean I didn't get. Can you please tell how I got my solution correct.
It means a few things: 1. The round has open hacking, which continues (as far as I know) for 12 hours after the end of the contest; 2. Every participant(as far as I know) is able to hack anyone's solution. If you find a testcase that might make others' solutions fail, you can submit the testcase and hack their solution; 3. Someone saw your solution, found a testcase for it and hacked it successfully.
After the hacking phase, all of the submissions will be re-judged with updated testcases, which will include testcases of successful hacks(as far as I know).
Mize orz!!
Can we have rating change quickly please
Attention! Your solution 170296922 for the problem 1722G significantly coincides with solutions Gaurav__Arora/170273818, om_arsa_2312/170279944, nihal_gupta/170293955, AhmedEl-Gohary/170296922. Such a coincidence is a clear rules violation. Note that unintentional leakage is also a violation. For example, do not use ideone.com with the default settings (public access to your code). If you have conclusive evidence that a coincidence has occurred due to the use of a common source published before the competition, write a comment to post about the round with all the details. More information can be found at http://codeforces.net/blog/entry/8790. Such violation of the rules may be the reason for blocking your account or other penalties. In case of repeated violations, your account may be blocked.
So my evidence that I didn't cheat or communicate with any one in the round is that i used a pre-written blog on geeks for geeks about finding an array of size n whose xor value is some k and I adjusted that function to solve yesterday's DIV4 G, you can take a look at my submission and compare for yourself.
https://www.geeksforgeeks.org/find-n-distinct-numbers-whose-bitwise-xor-is-equal-to-k/
Sorry, I reverted the punishment.
I have got a system message that my solution coincides with some other participant's solution for the question G, and as asked I am presenting here the common source published before the competition.
https://www.geeksforgeeks.org/find-n-distinct-numbers-whose-bitwise-xor-is-equal-to-k/
As I had seen this post earlier on geeks for geeks, I simply used it.
Please consider my participation for this contest.
Sorry, I reverted the punishment.
I have picked a portion of my code from an article of gfg: (https://www.geeksforgeeks.org/find-n-distinct-numbers-whose-bitwise-xor-is-equal-to-k/) You can verify the same. Please look into this and consider my participation. MikeMirzayanov
Sorry, I reverted the punishment.
I got my rating. Thank you.
Congrats on the rank, but I got a little confused.
Your previous rating was 1289, mine — 1283; I placed 333, you placed 394; And you ended up receiving more points than me. How does that work MikeMirzayanov?
Why ratings are still not updated?
They are usually updated around 10 PM (IST)
Was this round declared unrated?
I checked quite a few profiles from the comments and this round is marked as unrated for every single of those I checked. Any updates?
I have got a system message that my solution coincides with some other participant's solution for the question G, and as asked I am presenting here the common source published before the competition.
https://www.geeksforgeeks.org/program-binary-decimal-conversion/ Also used previosuly posted gfg function of binary to decimal conversion. As I had seen this post earlier on geeks for geeks, I simply used it.
Please consider my participation for this contest. Thank You
I don't see in your submissions 170280792 and 170278642 any code/ideas from https://www.geeksforgeeks.org/find-n-distinct-numbers-whose-bitwise-xor-is-equal-to-k/ Can you point out where I'm wrong?
I have been coincided wrongly just for using decimal to binary conversion function.Please make the contest rated for me.
No offence, I might be wrong,
But even 90% of your comment is copy-paste of another comment..
Stop deceive. You cheated and therefore were punished. Please don't distract me. Just don't do it again.
Other solutions: 170249794, 170266270, 170277345.
Your submission: 170280792
Hello I've got a system message that my submission to problem G coincides with some participants, but I've used the code present on GFG link to the GFG article Kindly consider my participation in this round. Thank You.
Sorry, I reverted the punishment.
I have got a system message that my solution coincides with some other participant's solution for the question G, and as asked I am presenting here the common source published before the competition.
https://www.geeksforgeeks.org/find-n-distinct-numbers-whose-bitwise-xor-is-equal-to-k/
I have even put the link above in my submission. So please revert the decision.
Sorry, I reverted the punishment.
Damn. That was fast.
why is the rating update taking so long?
Yeah, I was checking it all night.(about ten times
Guess it got updated 24hrs after the contest
Your solution 170295384 for the problem 1722G significantly coincides with solutions Jeopardy_007/170181586, kshitijsabale/170235981, pravin_as/170236185, sksusha8853/170244580, daijoub_dattebayo/170253614, Ag.akhand29Dec/170260220, vipin/170268963, coomlhamdle/170268986, no-one/170270439, pritish_001/170280715, vamshikrishna7697/170283391, saranshgoel_20/170287297, O_QufaD/170287888, noozy/170289556, noob5367/170290799, anurag78_20/170293266, CodeR_SaaD/170294427, singham_20/170294546, anupam_singh20/170295384, blablablacksheep/170295836, abhirai24/170297702, xorhero_02/170299463. Such a coincidence is a clear rules violation. Note that unintentional leakage is also a violation. For example, do not use ideone.com with the default settings (public access to your code). If you have conclusive evidence that a coincidence has occurred due to the use of a common source published before the competition, write a comment to post about the round with all the details. More information can be found at http://codeforces.net/blog/entry/8790. Such violation of the rules may be the reason for blocking your account or other penalties. In case of repeated violations, your account may be blocked.
Hello! This question had a similar logic as https://www.geeksforgeeks.org/find-n-distinct-numbers-whose-bitwise-xor-is-equal-to-k/, which means the code was published before the round, so I thought to use it. I think that the coincidence has occurred due to the use of a common source published before the competition. I don't even know any of the person's mentioned above. Is it a violation of rules, if it isn't then I request you to please look into this and resolve this. Thank You
@MikeMirzayanov Why only I got the penalty, and not everyone, while no one else got it Only my rating became negative
Me looking at my code for F after getting it accepted. (170379863)
what is the idea behind your solution?
Actually, I am checking out that, is there any connected component of size which is not equal to 3 (here two nodes are connected if they share a side or a corner). if so, then just print NO. Otherwise, I am viewing all the components which are connected and checking that whether they are L-shape or not.
Slr, Actually I replied the answer to your question to the person below and just saw it today =(
Sorry, I was replying to someone else. My bad =(