5 contests, lectures and analyses all divisions invited (from A to D level)
written and online problem analyses online meetings with lecturers in Zoom
1, 2 or 3 members teams accepted payment by card or by university invoice


Oleg *snarknews* Khristenko

Chief Judge of the Workshop
Chief Editor Snarknews.info
Programming Open Cup Co-Founder

Mikhail *Endagorion* Tikhomirov

Head of the Programming Committee at
Discover the World Programming Workshop 2020
Coach of the ICPC Gold and Bronze MIPT Medalists
IOI Scientific Committee Team Member

Andrew *andrewzta* Stankevich

Coach of 7 ICPC World Champions
Senior Coach Award in Phuket, Thailand, 2016
Professor at St Petersburg ITMO University

Filipp *DPR-pavlin* Rukhovich

Methodist of the Programming Committee at
Discover the World Programming Workshop 2020
Co-coach of the ICPC Bronze MIPT Medalists
Head Coach of the Moscow Open Trainings at MIPT


Alexey Maleev

MIPT Director of Remote Programs,
Moscow Workshops Founder

Sergey Darevskiy

Russian Code School Ltd CEO,
Head of the Technical Team

Olga Solodyannikova

Head of Off-site Workshops at Moscow
Workshops and Russian Code School

Maria Milshina

PR-manager and Deputy Director
for Moscow Workshops


Curriculum will be given in English.
Lecture topics below are approximate.
Flows - 1: Ford - Fulkerson Theorem, Edmonds - Karp algorithm
Flows - 2: Dinic’s algorithm, min-cost-max-flow problem
Suffix Tree: Ukkonen’s algorithm
Eertree (palindromic tree): building in O(n)
Suffix automaton: building in O(n)
Fast Fourier Transformation - 1: fast multiplication of polynoms and long numbers
Fast Fourier Transformation - 2: fast division of polynoms and long numbers, fast calculation of square root of number, fast interpolation of polynoms
Fast Fourier Transformation - 3: multidimensional FFT and its connection with Fast Subset Convolution (SOS dp)
Heavy Light Decomposition, Centroid Decomposition
Combinatorial Game Theory - 1: retrograde analysis, Sprague-Grundy Theory
Combinatorial Game Theory - 2: Smith’s theory
Dynamic programming: using matrices
Dynamic programming: using submasks, profile, broken profile
Advanced optimizations in dynamic programming: Convex Hull Trick, Knuth’s optimization, “divide-and-conquer” optimization Voronoi diagram. Fortune’s algorithm.
Mergeable heaps


We kindly ask participants to come prepared to avoid wasting time configuring your computer system at the event.

The requirements are as follows:

Any browser would work with the testing system, no special clients are required for the system.

The testing will be run on computers based on Linux.

To compile programs written in C/C++ on Linux-based laptops you will need a compiler compatible with gcc 4.9 (or higher), on the server will be used gcc 8.2 with c++17 support; Geany, Code::Blocks or CLion of the latest version are recommended as IDE. Similar or newer versions of compilers are recommended for Mac users as well.

For Windows it is recommended to use Code::Blocks (if possible, choose the distribution kit with a compiler included), CLion and Geany; using Visual Studio is recommended starting from Visual Studio 2013 (although for full compatibility it's better to have Code::Blocks and a gcc port).

To compile and debug programs written in Java it is recommended to use the latest version of Oracle JDK for Java 1.8. As IDE you can use Eclipse and IntelliJ IDEA.

For Python can be used PyCharm and standard Python2 and Python3 compilers. Note that libraries like NumPy are not included at the contest environment. For Kotlin can be used InetiilJ IDEA. Warning: Kotlin and Python are provided "as is" and we do not guarantee that any presented problem can be solved using those languages.

If you have any questions on the information above, please contact the Head Judge Oleg *Snark* Khristenko directly at snarknews@gmail.com