I joined CP for about 2 years ago (more than 16 months ago, I had another account with cringe nickname and I didn't want to wait a lot to change, so sorry codeforces, I don't use it anymore, but whatever), in old account I managed to reach 1400 in 3.5 months and get 1600 from 1400 in 2 more months. However, after that my progress got stuck and since that my rating changed very and very slow (the only notable change was quick reaching 1880 and getting back to 1600 as fast as reaching it).
I joined a free online course (from Yandex), where I learned a lot of algos, but not the ways on how to use it. I tried to be the best at the courses, solving as many problems and spending as much time as I can; I solved a lot of problems here, but when I faced real problems, like in CF or at nationwide olympiads/contests, I had really no clue what to do. I was so upset so I quitted the course at a middle of the path and a little bit later I quitted CP at all. The only successful contest for me was one where a problem related at the same topic I learned when reading Div3 editoral half-year before the contest.
Now I want to try again becoming CM, but I don't know how to solve the problems and come up with ideas here. I know just I'm bad at coming up with the ideas and thinking at all, but I don't know how to fix it and become better. I believe I can't become better by my own as I always feel myself tired, alone and depressed.
So basically I have a great desire, but no resources to make it real. I used to have really a lot of time and I tried to study and practice CP all that time, but the time was spent very inefficiently. What can I actually do here now?








I hope someone would help you to reach CM!! But can you please assist me to reach expert? I think it's fair enough to ask you since you wanted the same.
I guess that at least I can try it and that's what I'd like to try! So OK!
Thank you!! Well, I can't DM you in CF so provide me a way to communicate.
I opened my DM, check it now
In my opinion all the resources someone may need to get good at competitive programming are freely available on the internet, be it USACO guide, cp-algorithms, Codeforces catalog/blogs/editorials... but most importantly there is an insane amount of problems to solve.
The best thing to do to learn how to come up with ideas/get better at thinking is trying to solve problems, there is no secret recipe that will make your intuition better instantly, the only way to improve it is refining it slowly one problem at a time.
You should practice on problems that are neither trivial nor impossible, solving fifty 800 rated problems is useless because you will not learn anything, attempting 3000 problems will be useless since you won't even have a chance to know where to start, solving 2000 rated problems (this is just an indicative rating) is probably good for you since you are likely to learn (or come up) with a new idea or two while trying them. I personally use the discord TLE bot to get problems to solve.
There are also other practice guides in the catalog section of Codeforces and I suggest you to go through them since I am mostly recycling that advice.
Although I will ask you this: are you sure you actually enjoy competitive programming? Do you enjoy practicing and learning new ideas? Do you just want a new color for your username or do you want to get better?
i like your PP
I love when I learn something new, when I can solve a problem. But I hate when I can't understand some topics after several days and tries, when I have to debug my code for hours to understand the problem was that I simply forgot to add "+ 1" at some line. You can say that's OK, but it happens to me quite always and I'm not that careful to some details, I'm scattered, so I spend a lot of hours either rereading about algos to realize it or fixing a code. I really love CP, I like algorithms, DS, ideas, etc.; I like solving problems and participating in contests; all in all I like explaining some problems and helping others. All I want is to make my process and progress more dynamic. And, as you asked what I want, I can only say that a new color would be a huge sign that I become better, because it will mean a notable shift of my knowledge.
Even in good days, when I had a lot of free time, I never used to solve a lot of problems. Now I need to study in university, and I need to put much more effort than ever before. So idk, I love CP very much and I can't quit it, but the current progress... It's quite very bad.
For 1900, the hardest topics you need to learn are probably Dijkstra, DSU, and segtree (not even lazy segtree which tbh I just copy from atcoder library) so if you know those I think you're good topic-wise.
This signals some more important issues. Particularly in contests, solving the problems is only half the battle-- the other half is getting your solution to work as quickly as possible:
Imo this part is easier to train than learning to solve problems and gives you greater returns for your effort. (sidenote: I took an intro systems course at my uni and it probably improved my cp ability because of the mindset of cleaner code it gave as well as forcing me to leaen gdb!)
Implementation is an art in itself- don't neglect it! If you focus on this I think you will see these errors decrease and be able to handle them better when they do appear (because they happen to everyone).
Just my ten cents lol, good luck on hitting 1900!
So in algos I should have no problem, I've already learned all mentioned algos and DS (even lazy segtrees :D), so now I just need to remember them. I believe you are right when you say I should focus on planning, coding and debugging in my case. At the moment I use VS as best C++ IDE for debugging or CLion as best GNU C++ IDE (of course best in my opinion). I'll try to make your setup (but i'll need to install linux as windows VSCode is strange and linux one is great). So I guess that during my education i'll learn more about clean coding and GDB and for now the only thing i need to do is practise, at least just a little.
Thanks for advices and thanks for support! Now i'll go practising and look for best setup :)