It's been a while since I started my journey into competitive programming and in this year and (almost) a half I would say that I learned a bit not only about problem solving but also about myself, so I wanted to share my reflections on some mental aspects of practicing competitive programming hoping they can help someone else.
Please note that these reflections are merely personal and mostly stem from personal experience, if you disagree with something I would like to know your point of view!
I would also like to thank Intellegent, turska and Friedrich for proofreading.

Some background
I used to do math olympiads for 8 years before starting university, in hindsight I did not really like it that much since I never practiced on my own and would've rather played League of Legends / Minecraft / VALORANT or whatever game I was obsessed at the time. In the end I managed to get some okay results, a bronze and a silver medal at the national olympiad but I never made it to any camp for any international competition.
How I got into competitive programming
The first time I heard about Codeforces was in my first year of university, although I only actually registered and started solving problems the following summer. The initial motivation I had was that I wanted to get good at coding so I could get a job, basically grinding Leetcode, but Leetcode kinda felt like a dead end so Codeforces being more competitive in a sense made it more interesting to me. I am sure that a lot of people have a similar reason to do contests or just grind problems but for me this quickly became secondary: I think the main thing that differentiates programming problems to math problems is that an online judge can immediately tell me if my solution is correct or not, this way solving problems feels like a game or solving a puzzle, and I do not have to guess if I fake-solved a problem or not (some might say skill issue, and that's fair).
While I usually don't play ranked gamemodes in videogames, I found myself participating in almost every contest I could on Codeforces, the prospect of gaining rating or either way learning something new was a good enough incentive for me, maybe it can be a good enough incentive for you as well!
How I practice and the importance of liking what you are doing
I really don't want to make this another blog on how someone should practice (the answer has been the same since forever) but I believe that liking what you are doing is strictly tied to being able to practice effectively.
The main thing people point out when they ask me for advice in PM is my activity graph, and subsequently they ask me how I practice or how they should practice. The truth is that I have no practice schedule at all and I just get a problem to solve whenever I feel like it, I really think that the best way to practice a mind sport like competitive programming, which is naturally very different compared to a traditional sport, is just to be very interested and involved in what you are doing, if I would rather do something else I don't think it would be possible for me to put effort into trying a problem therefore turning it into a waste of time. This blog by Radewoosh explains this concept and I think it's completely correct, I say this because I found myself unable to do this during my math olympiad years: every week or so a student from my high school would organize some olympiad training and I would always participate, but I was completely unable to think about math problems on my own because it felt boring. On the other hand another schoolmate of mine started doing math olympiads 3 years after me, but managed to make it to IMO after 2 years getting gold, and 2 more years later getting another gold while scoring 41/42 points. I also made it to the first national camp of the school year during my last year of high school, but I truly felt like a complete stranger there.
This is the reason why I personally feel a bit awkward when someone asks me to make some training regime for them to follow or they ask for a list of topics to learn, most of the time it feels like that the person asking is looking for some kind of external help because they think they can't get good on their own, or maybe they're simply not willing to practice or look for the vastly available resources (Googling is still a very valuable skill in 2025). I will be honest here, if you find yourself in this situation consider how much you care about your goals and how much you actually enjoy doing some activity, maybe it can be a good idea to try something new. I say this because in hindsight I don't think I enjoyed doing math olympiads that much and one of my regrets from those years is not doing any kind of informatics olympiad.
Be ambitious, don't fool yourself
I made the final for my national math olympiad 4 times out 5 years of high school, which for most is a pretty good result, although I managed to get a medal only in the last two attempts. I thought that a gold medal was a realistic goal, every year I just thought to myself: "oh next year I will finally start practicing", but you already know how that went. The reason I wanted a gold medal is (probably) that I thought that the result of the competition was going to define the person I was, while ignoring the underlying issue, my disinterest towards maths. I think other students may find themselves in this situation, my advice is to think deeply about your motives and also to try new things while you still have the chance. I want to specify that I did not hate my years of high school, I am very grateful for the experiences I made and the people I met in those 8 years, they really are some of the most incredible people I met, but I just wish I had realized sooner that math was not my main interest and not something that I wanted to study.
Now if you are serious about getting good you should not be scared of challenging yourself, be ambitious! but obviously be reasonable enough, no one reaches LGM in a month. I remember setting the goal of reaching Master when I first reached expert, and I was pretty surprised when I reached the goal this January, if you challenge yourself you might end up being surprised with what you can accomplish. I also remember the first time I solved a 2300 rated problem, it really was not as hard as I thought. After that I set the goal of reaching Grandmaster in one calendar year, but it didn't go as planned, and that's fine, I believe that the important thing about becoming good at something is not becoming good itself, but it's more about the journey and the kind of person you become, some might say this is a cliché, but when I look back I am more happy to see how far I've gotten rather than where I've gotten.
I also recently failed to qualify for EUC2025, which is a bit (very) sad since I didn't meet my expectations, but I had a great time with my teammates (and I hope they did as well), the only thing that can be done is getting back up and trying again.
How to not get bored
I think never getting bored of something is impossible, it's true that I solved at least one problems a day for 500 days, it's NOT true that I practiced for 500 days in a row.
As I mentioned earlier I think practicing is a waste of time if I'm not in the proper mental state for it, so what I personally do when I don't feel like solving is looking for something interesting to watch/read: when I just started out I remember watching Errichto's guide on how to become red or galen_colin's roadmap. Some months ago I used to read blogs from the catalog section of Codeforces (incredible resource by the way), or about data-structures I ended up being interested in. In a way this just helps keeping a part of your mind dedicated to competitive programming, while being something that is relatively low effort.
I think getting into competitive programming communities is also a nice way to interact with other people and a way to stay engaged! I personally mostly hang around Discord communities.
Some of my favourite resources
I'd like to end the blog with a list of interesting resources that I used to check out when I did not feel like solving problems and that might be very useful to someone starting out:
The Codeforces catalog (please read it, it's very good)
Google searching for Codeforces blogs on various topics/ideas








catgirl orz
catgirl orz
kyorz
orz
congo catgirl for this legendary achievement . i learnt a lot from your submissions . hope to see u as an LGM soon .
orz
orz
whats orz?
In the Chinese OI community, this word means worship because it looks like a kneeling little person.
ohhhhh
woweee orz
orz
my goat
trashy
Can someone tell me why my written code for the last problem I solved is exceeding time limit on test 6, how can I improve my algorithm any more?
This line:
runs in O(n) (worst case) so your whole program takes O(n*m).
You could store the elements in a more advanced structure (like a set) so finding them is faster. Or — which I’d personally recommend — first read all the queries and reorder them instead of handling each one online. That way you can do a single sweep through your main table and answer all of them during that pass.
Try to figure out the details yourself.
orz
your consistency and dedication are inspiring. congos
orz 67 times catgirl
catgirl orz
Impressive!
orz
After 500 days of consistent practice on Codeforces, I’m still stuck. Can anyone mentor me or point out my mistakes?”
I think rather than spending most of the time on codeforces, spend it on doing olympiad mathmematics, trust me it is worth it.
It will help you a lot.
I mean all these GM and LGM that you see they have done olympiad level maths in there high school time.
To be honest, spend about 2 or 3 years on maths(particularly olympiad maths) and comeback on codeforces you will find A,B,C,D in a div 2 contest a cakewalk.
Thanks a lot, Do you have any important topic list of these
Just follow olympiad syllabus..
catgirl orz to you bro
beautiful blog ! orz
Hi catgirl I have doubt in question 2104D - Array and GCD, I have solved this problem , but I changed the one thing in Problem statement, After changing that I was not able to solve that new problem, In this question we have to find minimum no. of elements we have to remove, but there is no conditions on no. of coins K, so I just changed that after applying all operations the no. of coins left should be zero means at the end ,(k = 0) , now if we want to find the no. of minimum elements we have to remove from the array, so could you help me to solve this.
GM in 16 months and 500 days streak is insane, i am very impressed, also the blog is very interesting
thank you! I appreciate it a lot
catgirl orz
catgirl orz
catgirl orz
Hey, can you tell me your practice method, how did you chose the problems and how much time did you spend for each. And how did you decided when to do virtuals or learn new topics
Great read,thanks for sharing your experience.
I think Little_Sheep_Yawn orz!
You did great! Thats a historical achivement! I think you can reach LGM soon! Good Luck!
orz
Impressive
I did for 775 days until my streak broke. Tho I would say it's not as great as yours
So, um, hate to rain on your parade, but what about 8 June 2025? 👀
Oh wait, there is 323549810, but it was judged on June 9. Peculiar that Codeforces counts streaks by submission time, but the activity diagram is by judging time? 🤔
I saw that aswell but curiously enough that square is filled back if i put my activity on Only public :thinking:
keep going, I am proud of you
Congratulations! I am aiming to reach Master before June 2026, but my current progress feels a bit slow. My approach is to try to solve 1800-2100 rated problems quickly. Sometimes, I get frustrated when I can't come up with any ideas and end up reading the editorial only after solving the problem. Could you please give me some advice on how to improve? Thank you!
Orz
red catgirl orz
catgirl**orz**
as a big fan, big congrats!
Can't wait to see you as an LGM
Damn consistency!
Do you answer questions about the problems you have solved?
I downloaded your submissions, I'm just curious where I'll end up stuck.
check me!!! hehe!!! back in 2024, our country went through a protest and the then govt shut down the internet... otherwise I would have had a 1000 days in a row by now. :/