오랜만이에요, 코드포스! (Long time no see, Codeforces!)
I'd like to welcome all of you to Codeforces Round 688 (Div. 2)! The contest will start at Dec/04/2020 16:05 (Moscow time), and it is rated for all participants with ratings under 2100. Note the semi-unusual start time.
You will be given 6 problems and 2 hours and 15 minutes to solve them. The score distribution will be announced soon.
All problems are prepared by me, with a lot of help from the testers making me realize that my solutions are dumb.
Thanks to Green55, JooDdae, cs71107, YeongTree, Savior-of-Cross, jh05013, blobugh, 39dll, InfiniteChallenge, Pentagon03, sonjaewon, slah007, jooncco, and kalki411 for testing the round, and especially xiaowuc1 for helping polish English statements as well. I would also like to thank 300iq for round coordination, and MikeMirzayanov for the great Codeforces and Polygon system.
See you in the round!
UPD: The scoring distribution is 500 — 1000 — 1500 — 2000 — 2500 — 3500.
UPD 2: The round is finished. Thanks for your participation! I'm sorry about underestimating the difficulty of problem B, but I hope you still enjoyed the problems! The editorial will be posted in a minute.
UPD 3: The editorial is out!
UPD 4: Congratulations to the winners!
Div. 2
1: caoyizhong
3: Misaka23334
Unofficial Div. 1
1: Geothermal
2: jiangly
3: neal
4: saketh
5: Pyqe
As the problemsetter, I want comments!
djm03178 orz....
G.O.D
Ok I commented as per your wish.
So yummy~~
djm03178 (Good problemsetter)
As a participant, I will give you upvote.
As a participant, upvoted and commented :)
// cout << "Hi" << endl;
sir make sure to add some or atleast a dp problem between A-D.
the problems have bet set a long time ago. So I think this is not possible.
I hope it is a good contest :D
same i also hope it be like the educational 99
As a tester, I wish I could participate in this round as this round is very well prepared by djm03178. Good luck to all the participants!!
kalki411, I see your name as a tester in many contests. As a CP enthusiast, can you please let me know what can I do to be a tester?
You need to know the problem setters (to get asked) or take part in many CF contests (to be asked by Mike if the problem setters cannot find enough testers).
Hope it helps.
Thanks a lot! Sadly, I don't really know any of the problem setters. I guess I'll have to wait patiently and hope Mike asks me sometime in the future.
Theirs a pretty big discord server where a lot of people hang around. Imo it's the best place to get to know problem setters and probably ask to be a tester. Just remember to not be so annoying ;)
Can you pls share the discord group link or the process so that I can join. Thanks
I forgot to include the link lol https://discord.gg/algorithms
Dude C was easier than B... at least for me. I litterary wasted 2 hours trying to solve B. Props on C though pretest 1 is very helpful to skip a ton of mistakes.
yes... you got my comment as you are problem setter. thanks a lot. this round was awesome
As a tester, Please enjoy problems!
why is this getting downvotes lmao
Even when I saw that comment first time, it already got about 70 downvotes, which made me surprised.
When I first saw this comment it got more than 70 downvotes and I didn't know why... To tell the truth, I haven't seen such kind of comments being downvoted before.
As a tester, I think he deserves upvotes. He did a great job as a tester.
Wow.. I'm looking forward to participate in this round!
Korean Round!
Is it rated?
I think so
Yes
Amazing writers Amazing testers and Amazing coordinator i wil remember the day 2020 December 4 forever.
It's my ex-girlfriend's birthday on that day... Should I wish her excitedly, normally or not at all? The only thing I'm excited about is the contest and a little bit about the INDIA-AUSTRALIA cricket match.
Then several cricket match is given and they have distinct costs and happiness
Unfortunately, I only participate k match among them
What is the best strategy I maximize the girlfriend's happiness and then minimize the costs I spend
Wow amazing problem!
.
Another Korean Round! This round will be amazing!
This round is sexy.
Algosexual?
팬이에요 :fan:
Hope they dont give out a contest full of "interesting observations" problems.
I hope they give out a contest full of "interesting observations" problems.
i hope they give out a contest full of "INTERESTING" problems
I hope they give out a contest full of problems
Queue problems, statement problems, editorial problems...
big fan sir :)
꼭 참가하겠습니다!(I will participate in this competition!) :god: :fan:
please don't make it like educational round 99 !
Please make it like educational round 99 so that we can see where we falter and keep learning new things!
Wait.... A negative rating tester??? Thats something new
A negative-rating tester whose atcoder rating is more than 2000 :D
Hope contest will bring some new learning
Increase in ratings too.
Oh friendly time for Chinese! But we Chinese will have a important contest (NOIP) right after this, hope for good luck after all!
May the pretests be strong!
Where the difficulties of problems in Codeforces round 685 and other?
unusual start time
Hope to see some interesting problems with short statements and strong pretests :)
The contest will start at Friday, December 4, 2020 at 18:35UTC+5.5.
Most Important Note the unusual start time.
Learnt a new lesson "Don't remind anything if it is already posted on Contest blog". Thank You.
Oh, time is more friendly than others
한국 시간 고려해서 semi-unusaul start time으로 맞춰주신 거 감사합니다! Thanks for considering Korean time!
Is it rated?
It's already mentioned in bold. Should they just write it in the announcement heading for you?
Why semi-unusual start time and not unusual? :thonk:
Can I get contribution without posting a meme
I'll take that as a No
Hope a Great contest
Why I am getting downvote. what's wrong
How do you know that contest is great before it even started ?
Upd : This was a reply to his previous comment he edited the comment after that.
hope to become green
I hope to become cyan
t's very sad that on the day of the round there is an RMI and I won't be able to raise the rating :(
i hope this time queue should be fast not as previous two contests !!
Plot twist-Early announcement was made just to get more upvotes.
How is it a plot twist XD XD
hmmm strange Monogon hasnt put any comment yet.
Yeah it's cause he's a lil caught up with planning his "As a setter..." comment for the next contest.
Monogon's father knows it all. LOL.
Hope this time we don't have to wait too much time for the rating.
코드포스 is the wrong spelling
That's how Koreans call Codeforces in Korean communities.
Good to see u again blobugh !!!
Geez, sad to know that you like seeing such things
I hope there are more interesting greedy, math, constructive algorithms.It can exercise thinking :D
vaibhav garg
my first contest after reaching expert! Super excited :D
I feel great when I see people like you, as some people after reaching expert, stop giving contests in order to uphold their ratings.
It's likely that I might become a specialist after today's contest, but I love this quote from the Batman movie — "Why do we fall? So we can learn to pick ourselves up."
bWayne is going to rock now:)
i wish to be a good contest
Hope the problem statements are as short as announcement
Wow... From the Round #620, we can see that djm03178 is a very talented problemsetter. I think this round will be great!
Is there a way to cancel the registration? I can't participate suddenly!!!
Yes, you can cancel it, but remember — no submissions -> contest unrated for you
I should go to sleep before 11:00 tonight so actually this div.2 is the last round before I leave :)
OK thanks for info
1 hour left i hope it will be easy. I also hope i increase and u all increase in the rate good luck :D
As a participant, thanks djm03178 for the contest.
In conclusion, good luck to everyone ^_^
Hope to perform good in my
100th contest :)
Good luck everyone....Good luck to you
this contest is pretty hard
I think djm03178 has done a typo while writing Div-*2* lol.
Is it Codeforces Round #688 (Div. 1.5)?
Is this a DIV 1.5 round?
I feel that in quest of making unique problems, problem setters are increasing the difficulty of the problem.
I think there was some other comment related pob B. what's going on? why codeforces deleted comment related pob B?
It is against rules to discuss problems before a contest ends. Please, wait for the end of the round.
Dude, I got banned on 2 days and can't participate on next cf round on FenWick because of writing comments "A < C < D < B for me", It's soo stupid. I think it's not prohibited to write ur opinion about level of problem not statement.
Your opinion on the difficulty of problems is information that can affect other participants. Just never talk about problems until the round is over. It's very simple. By the way, I recommend solving problems during the round. Note that the read-only mode does not limit participation in the rounds.
The owner's comment makes it seem like the problem in its essence was being discussed. Perhaps that was the plan all along to delete the comments and make it seem like the approaches to the problem were being discussed. On the contrary, statements were made to connote the recent trend in absurd difficulties for Div 2B and there is nothing from the rules here that forbids that. If a specific rule bears that intent, I would humbly suggest that the English version is re-written in a way that the meaning is not lost during translation.
Can-do's and Can't-do's 5th
"The contestants are forbidden to talk about subjects, related to the problems, with anybody, including other contestants. It is only allowed to ask questions to the jury via the system (see the 'Questions' section)."
I hope your rate increases :)
I think codeforces is trying to avoid beginners. People are expecting a lot even from B.
All those confidence of solving A,B,C during contest is going down... day by day...
yes and thats making me much sad :.(
This is a Div2 tho. I agree that the second problem may seem harder than usual but not that much. It was an easy to implement solution which needed a very nice observation. I think that it's better for the second problem to have something tricky in it, instead of being very easy and boring. Trust me, this kind of problems are good for beginners too because it teach them to think outside the box :). Also, there are div3 contests which kind of allows the beginners to solve the first 3 problems quick.
Now I understand, contest timing > 2 hours then it is going to be Div 1.5
In my opinion, B felt much harder than C.
I'm curious how many people just solved D quickly by just simulating to get the expected value of (k 0s) followed by a 1 and observing the answer from that (though it is pretty easy to obtain even without that).
Transforming the tries to coin flips, it totally sounds like a common probability problem, which of course it is heh: https://math.stackexchange.com/questions/364038/expected-number-of-coin-tosses-to-get-five-consecutive-heads
Yeah, one of my friends just told me about that, but simulating is really trivial as well (and faster if your math is weak like mine) with a simple code like this, and its pretty intuitive why it should work after you see the result.
I derived expected value for covering different size gaps between successive checkpoints. For $$$g = 1$$$, ie consecutive checkpoints, expected value is $$$2$$$. For $$$g = 2$$$, using expected values, we get $$$6$$$ and then $$$g = 3$$$ we get $$$E(g) = 14$$$, using three equation. and then I thought maybe it is $$$E(g) = 2^{g+1}-2$$$ but dont know the general proof
Edit:
Ok link by robinz62 was useful, thank you
Lol You don't even need to simulate take a look at 1265E - Beautiful Mirrors
Got terribly stuck at B. Can anyone please give me a hint now since the contest is over?
first try to find how can you find min value of given array without any changes
The key observation is that changing a number at begin is like removing it from the array.
So we need to find which number, if removed, contributes most.
The contribution per number is the sum of differences of the adjacent numbers, and the number itself.
That's very well put. Thumbs up.
If you want to see the approach or idea for solution of B:
My Solution
how to solve D??i feel dumb for 1 hr after solving c.
Note that You need expected 2^(k+1)-2 moves to do 10000...0 where there are k digits.
Number of steps to cross 1 is 2 , 1 0 is 6 , 1 0 0 is 14 , 1 0 0 0 0 is 30 . relation is s = 2*s+2 . Odd number of steps is never possible since to crossing any stage must be even . Now find biggest s which is close to n and keep doing that until n reaches 0 . For example for 20 it will be 14 + 6 i.e 1 0 0 1 0
...
Why didn't this work for C?I think there is a carazy mistake there.
I think problem D needs more explanation.
D, how can we get an integer number of expected tries at all?
I guess the expected value converges to an integer when total tries is infinity.
If there is one stage, then
1/2 + 2 * 1/4 + 3 * 1/8 + ...
I do not see for any number of stages how I could make such sequence ever result in an integer sum, by adding some checkpoints :/
See this
This is helpful link, thanks.
So my above formular is kind of right, and simply sums up to 2.
probability you will cross that level is 1/2 . Now i ask you a question , how many times you will win if you play at that level 2 times ? Answer is 1 . Else probability won't be 1/2.
You can similarly generalize that beating that level n times will take 2*n matches .
Beating n consecutive levels without a checkpoint is equivalent to getting heads in a coin flip n times in a row. Having that in mind you can read https://www.codechef.com/wiki/tutorial-expectation.
Probability to cross a level is 1/2 . Thus total number of moves require to cross is 2 . Suppose i crossed a level and fell again to it . Then again expected number of moves required to cross it again will be 2 and thus total 4. Hence not only it will be integer but also even.
Ah... ok, got it. Thanks. I was simply completly wrong ;)
How? How can you relate probability with number of moves?
I should have used "expected" in place of "total" . But i think most people would have got it.
Why guys why?? :(
How to solve D ?
It's either too much math or too much pattern finding
If you have a range with 1 at the beginning and k-1 0s after, then this range increases the expected value by 2^(k+1)-2. So while remaining length is > 0 you can simply take largest k for remaining length and put 1 and k 0s at the answer.
What's the proof for that? I tried to prove it during contest but couldn't complete the proof.
https://codeforces.me/contest/1265/problem/E
See this problem and its editorial
:( Now I really regret not upsolving that contest.
I found that off google by searching "expected number of coin tosses before getting n in a row", where there's a convenient codechef link with the closed form
the proof does seem kind of messy, so I suspect most people might've done the same
EDIT: I realize it's quite obvious now if you write the recurrence relation $$$E_k = E_{k - 1} + \frac{1}{2} + \frac{1}{2}(1 + E_k)$$$
I firstly had a formula like 2^0 * k + 2^1 * (k-1) + 2^2 * (k-2)+...+2^k * 1 + 2^k. And I wrote bruteforce for k to 100 and saw the pattern.
You mean\begin{equation} {2^{k+1}-2} \end{equation} How do you prove it ?
Let $$$E_x$$$ be the expected number of the state where you have beat x stages.
It's easy to get $$$E_k=0$$$ and $$$ E_x = \frac{1}{2}E_0 + \frac{1}{2}E_{x+1}+1 , x < k$$$
After calculation, you will get $$$ E_0 = \sum_{i=1}^k \frac{1}{2^i} + \sum_{i=1}^{k} \frac{1}{2^{i-1}}$$$
And it means $$$E_0 = 2^{k+1}-2$$$
That's the answer of k stages like 1 0 0 ... 0 0
There is one more beautiful way to proove it.
1-cell
and you have $$$s - 1$$$0-cells
till the next checkpoint you either succeed instantly with the $$$1/2^s$$$ probability, or you loose somewhere and return to the1-cell
. This situation is equal to flipping a coin that gives heads with the probability of $$$p = 1/2^s$$$. It's a known fact that the expectation of the number of throws is $$$\frac{1}{p} = 2^s$$$0-cell
as about going back into this cell instantly after loosing a game in a cell after it. Indeed, if you loose a game you return to the last checkpoing and so steps after it you return to the0-cell
we are talking about.10...0
block with k zeros is $$$2^{k + 1} + 2^{k} + \ldots + 2 = 2^{k + 1} + 2^{k} + \ldots + 2 + 1 + 1 - 2= 2^{k + 2} - 2$$$Voila.
was there an easy way to solve c or it was brute force???????
yes brute force but n*n*40 time compexity so it is same as reading input
How to do D...
Apart of the long statements and the difficulty of problem B, I think the problems were amazing! Thanks for the authors.
I hate you Gildong !!
Where to see the solution???????????
can someone help me with problem C?
triangle space is base*height/2 since they want it multiplied by 2 so it's just base*height so you just need to find the longest line for each number and you can calculate the max space
I got the idea but sadly could not code it in time
B was way difficult !! i tried around all approaches but was getting none of them correct
Thought of sorting and making all elements equal to median of the sorted array that didnt even work , making all elements equal to minimum , maximum That also didnt work , taking absolute difference between the adjacent elements that didnt even work !!
I think B was really a difficult question !!
If you want to see my approach for this problem, you can see here.
Very strict time complexity for C
its not strict. You are saving index of each character. NOW, if all 4*10^6 are same character then you complexity will be (4*10^6)^2 (as you are traversing each possible pair of each character) which is definitely not in time limit.
are u seriously? I think, (4*10^6)^2 = 1.6e+13 is way too much, and also t <= 2000. O(n^2) is not good for this.
Continuous maximum value of n could be 2000. Hence the value 4*10^6
But then matrix is n*n and u r saving indices of character so your set contains 4*10^6 elements. Moreover u r traversing ur set in two loops making it near 10^13...
My O(n*10*4*2)ish 100378697 got AC with 2997ms. I can't even.
What should I do, if someone asked me to send him the solution of the problem until the end?
humiliate him, tag that cheater in your comment
Sulaimon is a cheater then
(It means: "Give me the solution to the second problem in Div. 2 contset, please")
After you have uploaded your image on any site(like imgur), open that image on that site,
right click -> open image in new tab, then copy the URL(should end with JPG/PNG), use that URL to upload image
Thank you very much!
Problem C gave me PTSD
Long and difficulty problem statements !!
I hate problem B
I can feel your pain.
it was too hard as not usual
what the fucking B
Damn that B problem will nerf my rating by far.. Like you could skip one of the numbers each time so I decided 3 cases skip the 1st one, skip the smallest one and skip the biggest one but I would not get the AC. I would get WA on test 5. Can someone give me a test case where these cases don't work?
0 25 0 10 20 30 40 50
This can be done in 8 steps.
Can anyone explain the solution of problem B...?
Look at this comment.
Any Explanation on how to solve B ?
Look at this comment.
Struggled on B for almost 2 hours but solved D in less than 10 minutes :( Feeling very terrible
Story of my Codeforces career. And the funny thing is you need guts to skip B and go do D. Because come you did not solve D guys that were persistent on B will get B and you will get less score than them even if you get B later.
Div2 B took me 20 minutes to understand the problem, 40 minutes to crack, 20 minutes to get the idea, 10 minute to implement, 20 minute fixing bug. And after that what happened? The contest has been finished!! BTW, problem b was amazing!
could you please explain the solution?
Deleted
This round was a nightmare and a reminder of how much I need to practice
How to not brick on this contest's B?
Unpopular opinion: D is easier than B and C.
I found E easier than C.
I found E easier than B and D, XD.
Agree with that.
This was a good set of problem set.
I Enjoyed solving them
My dude you only solved A tho :/
Yeah bro
But that was fun
That's what I said ;)
This kind of contest is bad for mental health.
Can't agree more :(
Not a good round, the statements wasn't clear enough.
:D I used 8 ifs for each for in problem C and get TLE :D
Unpopular opinion I liked the contest B was C level but it's a nice problem the solution is not stupidly obvious .. solving C isn't too hard but understanding it may take some time
solution to problem B.
Please where did you get the idea that changing one element of the array implies removing it. If all the elements before the element you changed are not equal, I don't think you have removed it.
Look at this comment.
Removing that number means, you can convert that number to its next number which will skip the step to convert the suffix to that number. You can directly covert the suffix to its previous number.
While solving problem B , I observed that for given array total operations required would be sum of absolute difference of consecutive elements. How to prove it concretely ?
Start from last element add absolute diff of last and second element... Then last 2 elements becomes equal and equal to 2nd last. Go to third last element then add the abs diff bw third last and second last and go on.... resulting in sum of ablolute diff bw adjacent elements..
In an array where all elements are equal, the sum of absolute differences of consecutive pairs of elements is $$$0$$$. The reverse also applies — if that sum is $$$0$$$, all the elements must be equal.
When incrementing / decrementing the suffix starting from index $$$i$$$, note that all the differences between elements in the suffix and the differences between elements outside the suffix remain the same. The only place where that difference changes is in the pair of elements where one is inside the suffix and the other is outside it — indices $$$i - 1$$$ and $$$i$$$.
Since each operation changes the difference (and, performing optimal operations, decreases the absolute difference) by exactly $$$1$$$, number of operations required is greater than or equal to the sum of the absolute differences of consecutive elements. The shown algorithm can do it in that number of operations, thus the sum of the absolute differences of consecutive elements is the minimum number of operations required.
Thnx for such clear solution and observation :)
interesting proof . Thanks :)
After CF predictor predicts me -50,
What my mouth says: Rating is not the matter. The idea u learnt is more.
What my mind says: Rating is the matter,dude.
Please explain problem B in more detail.
Let we have numbers $$$a_1, a_2, a_3... a_n$$$. Let make them all equal to m.
Then to make $$$a_1$$$ equal to m we need $$$|a_1 - m|$$$ steps, and all other leemtns would increase by $$$m - a_1$$$.
Then, to make $$$a_2$$$ equal to m, we need $$$|m - (a_2 + (m - a_1))|$$$ steps since $$$a_2$$$ is $$$a_2 + (m - a_1)$$$ now. $$$|m - (a_2 + (m - a_1))| = |a_1 - a_2|$$$.
And total addition to elements is equal to: $$$m - a_1 + (m - (a_2 + (m - a_1))) = m - a_2$$$. From here we can see, that total addition to elements after $$$i$$$-th step are going to be $$$m - a_i$$$. So, the ansewer for number m is equal to $$$|m - a_1| + |a_1 - a_2| + |a_2 - a_3| + .. + |a_{n-1} - a_n| $$$.
Now we want to minimize that sum. We can always choose $$$m = a_1$$$ to make first number 0. After that we just want to minimize the sum we have.
To do that let assume we change $$$a_{j}$$$. After changing $$$a_j$$$ to $$$a_{j-1}$$$ (actually we want $$$a_j$$$ to be in interval from $$$a_{j-1} $$$ to $$$a_{j+1}$$$). After that $$$|a_{j-1} - a_j| + |a_j - a_{j + 1}|$$$ is going to become $$$|a_{j + 1} - a_{j - 1}|$$$. So we want to find such $$$a_j$$$ that $$$(|a_{j-1} - a_j| + |a_j - a_{j + 1}|) - (|a_{j + 1} - a_{j - 1}|)$$$ is maximum and change it to $$$a_{j-1}$$$.
That's all.
Why should we bring this number to zero: "We can always choose m=a1 to make first number "0"?
See, nothing, except $$$|m - a_1|$$$ depends on m. As soon as we want to minimize the whole sum, we should make $$$m = a_1$$$. Otherwise $$$|m - a_1|$$$ is going to be bigger than 0, but making $$$m = a_1$$$ will make sum smaller.
And what m should we equate them with, and did I understand correctly that each a[i] = |a[i]-a[i-1]|. That is how to find it m?
No, you get it wrong. We just say that m is first number. We've proved that ansewer is $$$|m-a_1|$$$ + sum of absolute value of difference between $$$a_i$$$ and $$$a_{i+1}$$$ elements. Then, we want to find one number $$$a_j$$$ and make it equal to $$$a_{j-1}$$$ to minimize the whole sum
Benefits of hard contests:
1- No long queues. 2- System testing starts and ends in 30 mins. xD
C was easy but implementation was bit long i solve in 5 minutes implement in 80 minutes
Same! I also felt it was bit of implementation heavy.
why is B being rejudged?
I think Mike added some more multi-tests and rejudged. Seems that my tests weren't strong enough :(
Nice problemset! Hope there will be more problems at the same difficulty as this in the future for the middle-ratings like me. Thanks for your contributions =) very much
The scoring distribution is 500 — 1000 — 1500 — 2000 — 2500 — 3500.
REAL scoring distribution is 500 — 2000 — 1500 — 2000 — 2500 — 3500.
LOL
It seems that AceKing and I were the only people in the whole contest who passed the pretests for C, but TLEd on the main tests :( that's quite a sweet spot we managed to hit with our execution time!
How to find this who all failed systests without exploring the whole ranklist obviously?
filter the submissions
I didn't see any filter for that. Are you sure?
As Forward. says, I clicked status, filtered on problem C, verdict Time Limit Exceeded. The results are displayed in reverse chronological order, so I looked specifically for entries submitted in the time range of the contest, but which got TLE verdict after the end of the contest. There were only 2 of us.
Okay seems fine but I was looking for something which can show me all types of failed sys-tests (WA/TLE/RE etc) on one page. Thanks anyways.
I don't believe that exists.
Not 2, there is also me who MLE-ed — you should filter by "rejected" and tests >= 10 (I think this is the number of pretests for C).
In my comment, I specifically said "TLEd" and referred to execution time. Unlucky that you MLEd, though.
You are right :(
Today was the first time I needed to fix an MLE from pretests and fail system tests due to MLE :/
https://codeforces.me/contest/1453/submission/100368040
Today contest very bad contest. I downvote today contest. Do not make tomorrow contest. I not give contest. djm03178 do not make contest again.
Full support!
B was probably more difficult than usual...
I think the 1st standing in div2 did not finish the competition independently for the submission time of his code. If he did, I apologize for this comment.
I did a very stupid mistake in B.
For n = 2 answer will be 0 but I don't know what came to my mind, I printed their difference.
Sadly that case wasn't in the pretests.
The contest was very good and problem A was easy and standard.
What are you waiting from Div 2 A?
when will the rating changes will be published ???
Was it div1?>:
hic :(( i set the "max" is too small so i failed in test 27 :(( sad
+cn u plz upvote me cuz i toook many downvotes today
Honestly, I'm tired of making small mistakes that cost me the whole round... In my submission, changing this line from
pow[i] = (long) (Math.pow(2, i)+pow[i-1]);
to
pow[i] = ((long) (Math.pow(2, i))+pow[i-1]);
solves the overflow issue and gives correct answer.I can remember more than 5 contests that I made similar small mistakes and it is really annoying because I have the correct solution and I get WA due to a small bug like this. Does this kind of stuff happen to u as well guys? How do you overcome making these mistakes? I know that this is a matter of experience but I already understand that by casting the pow function as long, a whole other function is used that uses long to compute the answer instead of int. Yet in that particular case, I don't think I could have ever realized that this was going to overflow during the contest. Of course, now that it has happened to me, I don't think that I will make the same mistake again, but that's what I thought when I made my last overflow bug and I don't think there is an end to this :p
I got Time limit exceeded on test 5 problem C any help? I solve it in O(n*n) MySubmission
Your code actually has time complexity O(n^4). Consider the case where all the elements are similar (let's say zero). For example:
5
00000
00000
00000
00000
00000
Your code at first creates all the pairs of (i,j) that the array has the value of zero. In this particular case, all the pairs of i and j are added (n^2 pairs). Then you make a double loop over the pairs you created, and thus your overall time complexity is O(n^4) Your code is similar to looping over all pairs of array possitions (i,j),(k,l) which is O(n^4).
thanks a lot
Why there rating differs ? in this contest div2 #688
The second account is new account. So,1330 wasn't his actual rating though it is shown 1330 and neither 1432 isn't his actual rating now. You can the see this to understand better.
compare nishchay17 and optozorax, nishchay has a lower rating than optozorax and the same score. But optororax has a higher increment. Illuminati confirmed !!
After upsolving D, I am realizing that I should read all the problems' statements. D was easier than B and C.
Only if you are a math noob. If you are programmer then B and C are simpler. I needed like 10 minutes for B, had a hard time to get C right, and D was impossible at all.
How did you come up with the idea for B in just 10 minutes? It took me a lot of time to get the idea and the contest finished.
I asked, to which number would I change a fixed a[i] if I could change only that one number? The answer is that I would change it to one of its adjacent numbers. Which is the same as removing it. At that point, the question is how much contributes the removal of each number, which is near to the final answer.
In D on the other hand, I had simple no idea how to calculate the expected value for a given number of stages at all. It would have been nice if the fact that the expected value to finish one level equals 2 would have been written clearly in statement. Because if one did not read that fact somewhere before, it is hard to come up with it.
One formular is $$$\frac{1}{2} + 2\cdot \frac{1}{4} + 3\cdot \frac{1}{8} + 4\cdot \frac{1}{16} ...$$$, and we need to see that this sums up to 2.
In D, I tried some examples like $$$111$$$, $$$10$$$, $$$1001$$$ etc. and calculated the number of tries in each stage. I got a observation that all the time $$$1$$$ is contributing $$$2$$$ and the $$$i$$$th $$$0$$$ after it's nearest $$$1$$$ is contributing $$$2^{i + 1}$$$.
So, $$$1$$$ will give $$$2$$$ tries, $$$10$$$ will give $$$6$$$ tries, $$$100$$$ will $$$14$$$ and so on. And we can make any even number by adding these type of values.
Suppose $$$k=18$$$. We can write $$$18$$$ as $$$14+2+2$$$. We know $$$14$$$ tries will come from $$$100$$$ and $$$2$$$ will come from $$$1$$$. So $$$18$$$ will come from $$$10011$$$ (By adding all stages). That's it.
Once you know how to calculate the expected number to finish i stages without a checkpoint it is not so hard.
Yeah.
This is really a tough contest, and I got stuck in problem C for too long time, but the problems are really interesting and I enjoyed this round very much. Thanks for such a wonderful contest.
Video Tutorial for E
I cant get more rating contests, so I try the get more contribution, please
At first I got irritated with all the math problems in this contest and hence left contest in between (after I wasn't able to crack B for a long time)
But later when I did the post analysis: A, B, C were not that hard, meaning no new algo or any new concept were required to solve those. So this also means that more practice could have made it easier and solvable during contest.
I liked problem E a lot though. Balanced amount of maths, logical thinking and algorithmic skill required for E. Although even after spending so much time understanding and upsolving it, I am still not sure whether I will be able to solve such problems during any contest or not.
Thanks demoralizer for your screencast. https://www.youtube.com/watch?v=AFqmxQzffrU&t=4276s
It took us one month to prepare a video solution for problem B :) If it is still interesting to anyone, please consider:
In Problem E doesn't it makes sense for the problem statement to mention that find minimum possible value if the player always chooses the closest next snack optimally (as opposed to arbitrarily)? In the former case, we need to consider the best case and in the later case, we consider the worst possible case.
'Arbitrarily' is not equal to 'randomly'. It means that Badugi can decide whichever snack he wants to eat next. It's also hard to define what is being 'optimal' here, as the statement hasn't explained the goal of the problem yet. Instead, the statement requires you to find the value that makes it 'possible', as opposed to 'always', which means you should consider the best possible case.