After a long time of stuck in blue then I get 1899 rating. I was frustrated. I was thinking that MikeMirzayanov trolled me. But everyone was a friend. And they sey it will go up after the cheater check.
And it did!!! I got 1902 rating.
But only one day. This was a bug so Mike did cheater check again (no bug now) and it returned 1899. Yes. I was think that Mike trolled aagain.
But then my teacher go to 47TH ICPC WORLD FINALS LUXOR. And he meets Mike. And they share the epic moment over a glass (or many) of Argentinian Fernet.
So now I know that Mike is a good man and he was not trolling. It was the skill issue :(.
So next round I lock in.
Even if I was at the McDonalds table for 3 hours and not buy anything (they wanted to kick me out). Even if I coded from my phone. Even if I only know C and not C++. I had to lock in. I had to overcome my limit.
So I start solving.
Problem A is rough. I am falling behind. Position 2500.
Problem B feels easier than A, so I start to close the gap. Now position 1000.
Problem C is hard but then I make the obsercations and I am starting to lock in. Position 200 now.
Finally, D. I think it is like subset sum, but inverted. So I write a greedy, and I am not sure it always ends in 25 steps. So I make the risky move and submit the code. Accepted.
Position 50 at this point. Still more than one hour left.
So then it is the E. The E is a string problem? But I dont know how to do it. I make so observation. I make some reduction. But I still can do it. The minutes pass. I used all the tricks my teacher said but nothing works. In the end I lost E.
But I got 109 positin or something like that!!!!
And then I become one with purple name.
So we say thank you to Mike Mirzayanov, for wonderful Codeforces and Polygon platforms. Also thank you to all the great Codeforces user that supported me when I was stuck in blue!
NOW IT'S TIME TO BECOME YELLOW!
I thought this post was gonna be about how we never appreciate mike and such a good person he is for creating codeforces so we all gather to thank him
nice LOL, I had a friend who got 1599 too :)
I was 1599 yesterday lol
Bro why so downvotes I was just kidding LOL :(
Spectacular! Reach CM using C and phone coding :o I guess you will reach yellow soon.
Thank you for kind words bro!!
You are welcome, bro.
HOLD YOU EVEN DIDN'T USE A COMPUTER???! thank mike that WA on pp 1 doesn't count as a penalty
Congrats! I bet you will become master soon!
Thanks bro I wishh i get yellow name soon!
Bro's typing on phone speed is faster than my typing on computer speed. Congrats and orz!
Lol maybe but in this round it was only short codes i think
I'm talking about first-hand experience of me solving every single problem slower than you :)
Congrats! Can you please tell more about your journey?
Hey bro thank!
I don't know what to say. I solve many problems with rating a bit more than me. This is the best training. And especially upsolve.
For math, you don't need a lot, but it is very important to know to think with algebra. Like model the problem with the equation, manipulate an equation, to find a way to make it easier to calculate.
And also solve lots of problems to win intution for what will make it easier to calculate.
For DSA, I think you can learn most thing only if it comes up in the contest. But you can read in the competitive programmer handbook (https://cses.fi/book) to get the basic.
I realizd that many codeforces problems have no complex data structures! Many problems use only fixed size arrays or array-based structures, like partial sums.
If you need data structure, On many problems you don't need full power of data structre so you can use something easier to code. This is important for a C coder, because I don't have STL
For example, you usually dont need balanced binary search tree.
Sometimes dont need to modify after creation so you can use binary search on array.
Or maybe you only delete, so you can use build it balanced with tree where 2*i and 2*i+1 are children of node i (just like the heap incase you know it)
Or maybe it's not so many operarions, so a square root decompisition approach is fast enough.
The same happens with arrays. Dinamic array is not needed most time. Either make it big at the start, or just use linked list. It is rare that you need both random indez access and also dynamic size.
For example I use linked list for graphs because you don't need index acces in adjancent list, only iteration, so linked is ok.
But for prefix sum it is always just big at the start
But still, sometimes I need data structure so I implement in-contest and then save it to use in future contests! For exampld segment tree, sparse table, binary heap, sort algorithm, etc.
This is my last idea (it is very abstract, sorry): when solving a problem, I try to find what the main constructs involved are, and look at their definition or at some construction of them, and try to phrase the problem in terms of that construction. This often helps find useful properties to use in the problem.
For example, if problem uses gcd, think about euclidean algorithm is useful.
If problem of paths and connectivity on a graph, spannimg trees are important (especially DFS tree).
There is also a nice 3blue1brown video about "why slicing a cone gives an ellipse" which shoes this idea.
Sorry for long comments, i wanted to share how i think and some of my journey :)
orz
It's amazing to use a mobile phone to participate in a contest.
Last year, when I was traveling in Beijing, I had a similar experience: https://codeforces.net/blog/entry/123843#comment-1098019
Btw congratulations!
Thanks!
Cool when you mention the blog of my teacher!
Nice man , also , who tf calls it yellow its clearly orange.
Alright Mike what's going on?