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.

Level 3A

To advance to the next level, you need to solve all problems (except the contests marked with asterisk).

Simple greedy algorithms

Stack, queue, dequeue

Some theory:
one (do not bother with doubling the array yet, use fixed-size arrays),
two part 1, two part 2, two part 3 (in all these three parts, read mainly the into section and Implement using an Array section).

*Standard data structures (STL, etc.)

The topic is optional, but it will be useful in the future. The problems of this topic can be solved using theory from high levels, but there are useful standard structures in C++, which will allow you to solve these tasks easier. Perhaps the tasks will still seem difficult to you — but the topic is not mandatory, you can return to them later.

You mostly need to know the following C++ templates: std::vector, std::set, std::map, optionally their unordered variants and std::list and std::queue. And std::sort function. You can read about them in your favorite reference book, or use some links that I found: one, two. You don't have to learn everything by heart, you just need to understand what happens.

There are no such structures directly in other languages, but you can look for something similar. In Java, you will most likely find it, in python only for part of the tasks, in pascal there is nothing like that in fact.

Simple graphs

You can read the basic things in wikipedia. You only need to understand what a graph is, know some basic definitions, and be able to store graphs in a program. Of the ways to store the graph, the adjacency matrix and adjacency lists will be enough for you for now. You don't need graph traversals yet (until the next topic).