English version is in beta. All contents of the site should be already translated (mostly using machine translation), and everything should work properly. However, if you find any problems, please contact me.

About the C++ language

If you got here, but still write in pascal or python, then maybe you should slowly switch to C++. This does not mean that you have to drop everything right now and learn a new programming language; it strongly depends, firstly, on you, and secondly, on the current time of year. I advise you to switch to a new programming language in the spring-summer, when the main Olympiads of one year have already ended, and the Olympiads of the next year have not yet begun, but it also depends a lot on yourself (it may not make much sense for 11th graders to switch to C++ at school - you will be taught it at university, etc.) Therefore, before switching to C++, consult with me.

In fact, even level 3B is a bit early to switch to C++, it is quite possible to study both pascal and python at higher levels, but in any case, if you got here, then talk about C++ with me. In addition to the level, I have another criterion: it makes sense to switch to C++ if you are quite likely to become winners of the regional Olympiad; but, again, this criterion is not strict.

Unfortunately, it is difficult to recommend a specific resource or book for learning C++. The language is quite complex, and there is a certain risk of learning it incorrectly, but you already know another language and understand all the basic constructions, so it will be much easier for you to learn C++ than if you learned it from scratch.

The general theory on C++ is assuming that you already know some other language (there's quite a lot, to begin with, you can read "diagonally", but in general, at level 3B, it would be good to already understand 95% of what is written there).

After reading this theory, you can solve a number of problems from levels 1A-1B in order to understand the basic constructions of the language (respectively, you can read the theory in parts according to the topics of the tasks), and then continue solving problems at your current level, but in C++.

Also look at the "good solutions" at level 1 — there is a "good solution" in C++ for almost every problem, or even a few; I think you can even learn the basics of syntax from them.

At the same time, an important point: do not forget the programming language in which you are currently writing, especially if it is python! Python is very convenient in those tasks where there are not so strict time limits, and in general it will be very useful to you later in life, so if you are already writing in python, then do not forget it, and use C++ and python alternately for tasks, choosing which language is better for each task separately. If you write in Pascal, then in principle there is no great need to support this skill, but it is still better not to forget it, especially in case you suddenly have some problem that will not be solved in C++.