This course is a continuation of the (Advanced) Competitive Programming course. During the semester, we will cover algorithms and data structures that, due to their efficiency and comparatively easy implementation, see extensive usage in competitive programming (and often in real-world applications too!). While the previous course focused on basic algorithms, in this semester we will cover more advanced topics, for example treaps, min-cost flows, lazy segment trees.
Every topic is first introduced in detail during the lecture, and afterwards we provide a set of exercises, to be solved by implementing the solution in a programming language and submitting it to an automated testing system. The highlight of the course are the live contests, where the students compete between themselves in teams of three, just like in the official ACM ICPC competitions.