Olimpiada de Informatică – Nivel XI–XII reprezintă nivelul avansat al traseului CoderTech pentru informatica de performanță la liceu.
Programa oficială tratează clasele XI și XII împreună și presupune cunoașterea materiei din nivelurile anterioare de liceu. La acest nivel, accentul se mută puternic către alegerea algoritmului potrivit, analiza complexității și combinarea mai multor tehnici într-o singură problemă.
Un capitol important este Programarea Dinamică, extinsă către programare dinamică pe arbori și grafuri și programare dinamică pe stări exponențiale. Elevii trebuie să treacă de la aplicarea unor modele standard la construirea propriilor stări și tranziții în funcție de structura problemei.
O parte majoră a programului este dedicată grafurilor orientate și neorientate. Elevii studiază reprezentarea grafurilor, BFS și DFS, componente conexe și tare conexe, sortare topologică, drumuri de cost minim, parcurgeri euleriene și probleme hamiltoniene.
Sunt introduși și algoritmi fundamentali precum Kosaraju-Sharir, Dijkstra, Bellman-Ford, Roy-Floyd, Kruskal și Prim, precum și utilizarea arborilor parțiali de cost minim.
În paralel, programul dezvoltă lucrul cu structuri de date arborescente: arbori cu rădăcină, arbori binari, heap-uri, arbori binari de căutare și structuri pentru mulțimi disjuncte prin algoritmii Union-Find.
Pentru pregătirea de nivel național, programa avansează către puncte de articulație, punți și componente biconexe, LCA, diametrul arborilor, arbori indexați binar, arbori de intervale, Square Root Decomposition, algoritmul lui Mo și Range Minimum Query.
Sunt studiate și tehnici precum Meet in the Middle, ridicarea matricilor la putere în timp logaritmic pentru rezolvarea recurențelor liniare, principiul includerii și excluderii și funcția Möbius.
La Nivel XI–XII, scopul nu este memorarea unei liste mari de algoritmi.
Elevul trebuie să ajungă să recunoască structura unei probleme, să determine ce informații trebuie păstrate, să aleagă algoritmul sau structura de date potrivită și să argumenteze de ce soluția respectă limitele problemei.
O parte importantă a pregătirii este dedicată problemelor care combină mai multe concepte. O problemă poate necesita simultan grafuri, programare dinamică și o structură de date sau poate ascunde o transformare care face posibilă folosirea unui algoritm cunoscut.
Elevii sunt încurajați să construiască și soluții parțiale atunci când soluția completă nu este imediat accesibilă, să analizeze complexitatea înainte de implementare și să își testeze sistematic codul pe cazuri limită.
Scopul programului este dezvoltarea maturității algoritmice, independenței și capacității de a rezolva probleme complexe de nivel OJI și ONI.