In August of 2016, I wrote quite detailed post about my training routines.

In very short, in that post, I said that I spend minimum **1.5 hours thinking** on a typical Div2 C problem (sometimes even longer and in this case it's usually lasts several days). Then I look at an editorial and often it's not clear to me what problems's authors are talking about. After thinking on an editorial and comments for a few hours, I usually able to understand a solution from comments. As I gathered statistics about my training at that time, it's showed that I solved **26** hard (i.e. Div2 C) problems in period of **93 days**. I wrote that I have approximately 1 free hour per day on average.

That post gathered some attention (probably because I've collected detailed statistics about my daily training) and I received several responses from Div1 members including red coders.

Some participants advised to solve **500** problems on **Timus OJ** since Timus doesn't allow you to look for test cases and don't provide editorials. There is an implicit rule on Timus — "solve it by yourself". On Timus you can train your patience and ability to change view on a problem instead of looking at test cases and editorials. As I understood you have to try to solve a problem, if you don't have a progress then switch to a next problem and return back to problems you couldn't solve after a few days/weeks/months.

I liked that advice and worked in this direction for some time.

It partially helped me to learn how to be more flexible and change view on a problem after getting stuck and getting WA on your submissions.

Sometimes it was very pleasant experience to return back to a problem I couldn't solve a few months ago and quickly write a concise and clean solution which got accepted.

The problem is that my progress on Timus slowed down significantly after I've solved ~160 easiest problems.

I've got **another advice** (from a person who solved >500 on Timus): switch to a next problem if you don't have any ideas **20 minutes** after you read a problem statement.

It didn't work for me because in some cases I couldn't switch to a next problem since I thought I may be so close to solve it and **I continued to work hard** on a problem **for hours**, and in other cases I switched to a next problem **after ~30 minutes** then **switched again** to another problem after another ~30 minutes and so forth and **again in both cases I ended up not solving a single problem in a several hours** (usually these hours were during several days).

In another comment to my post I've been told that **~26 solved problems in 93 days is absurdly small quantity**. And I need to solve **at least 500 hard problems to improve** and at my current pace it may take very, very long time.

**Since I have strong tendency to linger on a problem way too long**, I decided to force myself to look at an editorial for Div2 C problems after I got stuck for more than 30 minutes. Again it didn't work for me since I often couldn't understand an editorial for hours. So attempting **to understand an editorial often is as challenging as solving a problem itself**.

Of course, after I understood an editorial (usually after sudden strike of **aha moment**), everything became very simple and straightforward. The problem is that I don't have a time machine to explain it myself a few hours earlier!

**Then I tried to go to a next problem anyway** if I couldn't understand an editorial **in 30 minutes** but I found it highly unsatisfying since **I just jumped from a problem to a problem without getting anything done**.

Some suggested that if I can't understand an editorial for more than an hour then Div2 C problems are way too hard for me at my current level and I should focus on easier problems. I've tried to just solve Div2 B problems to improve my speed (since it's still take some time for me to came up with a correct solution) but after some time I found it quite boring and unsatisfying as I don't learn anything new.

Some commented that I have a hard time understanding an editorial because I'm probably not familiar with some techniques like DP. This is certainly not true because **most of the time there is absolutely nothing I didn't know in order to solve a problem I couldn't solve**. It's still a complete mystery to me why I can't solve really easy problems for which I know absolutely everything to solve them.

Quite often after I have "aha moment" I wonder why I couldn't came up with a solution since a problem was so simple and straightforward.

I have an impression that some red coders already forgot what it's like to get stuck on easy problems for which you know absolutely everything you to solve them. No wonder why they keep saying — just practice more and learn new techniques.

It clearly doesn't make sense to say "just practice more" since **it may take literally forever if you are doing training in a wrong way!**

I've spent some time to learn advanced algorithms like KMP, Max-Flow, Segment Tree but it didn't help me since despite of my good understanding I forgot all of them as they do not appear among Div2 C problems.

I also tried to solve harder than Div2 C problems (i.e. Div2 D for example). While it was quite interesting experience it usually take even more time than trying to solve typical Div2 C problems.

**Any insights on how to train more efficiently?**

P.S. I've already read articles like How to get better?, The 'science' of training in competitive programming, How to come up with the solutions: techniques and others. **I think I missed something and as a result I'm training extremely inefficiently.**