So basically I have been doing competitive programming on and off for the past 4 years. Of course I have learned a lot but I feel I do not improve a lot. I have IOI coming up and this is my third year competing on it and I feel that I have achieved no major improvement. I learn new topics and new algorithms but then I try to solve problems and when I can’t figure out how to solve it I read the editorial to find out that I was going in a complete wrong path and the actual solution is something that I would never have imagined. I know practice is crucial and I haven’t been exactly constant at it but it just frustrates me a lot that I “wasted” a problem by reading its solution and not being even close to it. Some people say that reading theory and then practicing is not the best approach but the idea of just practicing and solving it then after reading the solution makes me feels frustrated and then quit practicing for a bit. How do you guys manage this feeling?
I recommend you to study some basic topics about mathematical olympiads(just like combinatorics and number theory) because it can improve considerably your problem solving skills and it can also give you some ability demonstrating stuff. Try to analyze the solutions of the combinatorial problems( not so hard problems for now) and learn from them. The website https://artofproblemsolving.com can be useful.
.