오랜만이에요, 코드포스! (Long time no see, Codeforces!)
I'd like to welcome all of you to Codeforces Round #688 (Div. 2)! The contest will start at 04.12.2020 16:05 (Московское время), 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, DreamingLeaf, jh05013, Lemonade255, 39dll, alswhp, Ku_Top, sonjaewon, slah007, jooncco, and rkm62 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~~
comments
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!!
rkm62, 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
Why is there so many downvoted comments .
hii sir big fan sir!! :")
yes
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!
It's pretty simple, girlfriend's happiness index will always be zero no matter what algorithm you apply in your life :(
Everyhing can be "normal" again if you wish her "excitedly".Gd luck buddy go ahead.
Another Korean Round! This round will be amazing!
WOW i cant stand it
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...
Problem 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!
but i think a contest after 688 should be like round 99 then the real testing of what we learned new will be checked
Agreed.
Yes
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 :)
hoping that queue should also be fast not as that of previous two contests !!
Looking forward to solving some amazing problems. :) //Hope I can solve more than 2 this time XD
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.
too late now
Oh, time is more friendly than others
I will participate in this contest.
한국 시간 고려해서 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?
Yes
Why semi-unusual start time and not unusual? :thonk:
Normal People be like, 'Hey' , 'Hi', 'Hello'.... and @djm03178 be like, "오랜만이에요, 코드포스! (Long time no see, Codeforces!)"...that's pretty cool and badass at the same time. ;)
Can I get contribution without posting a meme
I'll take that as a No
And I'll take your both comments as meme again ..lol
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 !!
(Long time no blue, Codeforces!)
Plot twist-Early announcement was made just to get more upvotes.
How is it a plot twist XD XD
Expectation is that early contest announcements would get everyone hyped.
hmmm strange 1-gon 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.
1-gon'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.
I hope the problems will more enjoyable than last round .
Notice the unusual timing.
My first comment on Codeforces only getting downvotes. Noice :)
Now my contributions are in negative :D
Hope I could solve A and B in time. Thnx for the contest.
Good to see u again Lemonade255 !!!
Geez, sad to know that you like seeing such things
Only thing giving me hope is the unusual start time .May be something unusual happens for everybody in rating changes.
xoxo +delta*2
I hope there are more interesting greedy, math, constructive algorithms.It can exercise thinking :D
Your effort is appreciated! May the CodeFORCES be with you...
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
Здравствуйте всем тот кто сдаёт эту соревнование !!! Удачи вам конечно я желаю !!! После соревнования если вы не смогли решать не которые задачи , тогда заходите по ссылку на Мой Телеграмм канал мы будем разбирать задачи ровно через час после завершения соревнования !!! Успехов вам !!!
This is my first time to participate in codeForces competition. What is the reward for this competition?Thanks!
Explore the competitive programming, that would increase your problem solving skills. And after participating in this contest, you will definitely get a rating, rank among all the participants. So enjoyed it. Its a coding game.
Удачи всем !!!
I am really really excited for this contest. Participating in Div-2, for my kind of rating people is really beneficial.
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
thank you,bro
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
Yo Boiz i am sing song... Kaali kaali nain ka pakode kaale shoe leke gaddi kaali kaali teri ghadi wali da bache bache wich hit kudiyo da bradd pitt leke gaadi kaali kaali teri ghadi wali da teri mutt marida tenu pyaar krda....all black
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
Thanks ^_^ Same to you...
As a newbie, starting my 10 mins wim hof breathing session before the contest starts in 12 min to improve my chances :)
this contest is pretty hard
https://www.scaler.com/event/coding-interviews-dynamic-programming?rcy=1&rce=e068e621bfd5
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.
this is a very hard contest
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)."
Ignoring the terrible punctuation on the first sentence that confuses anyone that properly understands English, one is only left with the second sentence.
"It is only allowed to ask questions to the jury via the system". This implies that there should be no discussions about the problems in themselves. This does not imply that someone cannot say that Div2B is hard publicly.
Like I said if one can't say this, the rule needs to be extended correctly.
I hope your rate increases :)
If individuals cannot speak on how they feel on this platform, why is there even an option to comment? There was a harmless conversation about the ridiculousness of supposed DIV 2B and it was censored. At least reset my contribution to 0 and do it smoothly. Many individuals here are not used to force and imposition as common in many communist countries. In the modern world, there are guidelines for doing things and thus only overstepping comments should be reported and then censored. What was being discussed is that: As there is no benefit to doing CP, there is no point participating in these contests since some problem setters want to act as gatekeepers and keep creating overly difficult Div 2Bs.
We understand that sometimes problemsetters may make mistakes as we all are humans but why delete comments??
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
Today's Contest was really tough.
In my opinion, B felt much harder than C.
I understood B after thinking for some minutes, but couldn't apprehend C at all. What did I miss?
Dumb problemsetters, they never learn...
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
Damn.. submitted D in the last 10 seconds. I hope it holds.
Congrats dude. It passed.
Thanks, but it needs to pass system tests as well. Fingers crossed.
Edit: Cool, it passed.(submission)
...
Why didn't this work for C?I think there is a carazy mistake there.
Please hide your code.
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.
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.com/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...
please hide your code
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
First insert positions of all d points in a vector of pair. Then fix any 2 points from that and rest is just math. Let 2 points be (a,b) and (c,d). By just math I mean the height of the triangle can be abs(a-c) or abs(b-d). There will be 8 possible combinations and the max out of them will be the answer. You dont need to worry about the 3rd point as we are fixing it in the 8 possible combinations taken.
Have a look at htis photo: https://ibb.co/6WppWZL
Code :
i think it will be good to use spoiler.
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...
Oh I Get it thanks
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
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!
Thank you for the round, I really need to work hard.
Problem C gave me PTSD
how to solve it!!
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...?
just erase every element of the array one by one and calculate the result. its just the explanation you have to do it in optimize way
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!
Yeah it was good but the level of question was like C.
could you please explain the solution?
Correct me if I am wrong, If u don't change any elements in the array, the minimum operation is the sum of all abs(a[i],a [i+1]) where i is 0 <=i <size of the array. Now you have to greedily find changing which element would give you the minimum operation. It is long to write. Though keep in mind you have to subtract the max dif and also the changes to its adjacent element after changing, I am too lazy to write it after this struggle
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.
Thanks a lot. It was a good editorial. Easy to understand.
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
Thank you so much!
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.com/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.
Same mistake :-(.
omg RIP :(
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 ???