Traseu de învățare — Clasa a VII-a
Clasa a VII-a este anul în care înveți să organizezi cod și date. Înveți funcții (împarți o problemă mare în piese mici), tehnici avansate pe tablouri, structuri (struct), STL pentru sortare și căutare și prima ta metodă algoritmică reală: Greedy. La extensia națională adaugi numere mari, exponențiere rapidă și stiva. Până la final nu mai scrii doar „cod care merge", ci cod care gândește: alegi tehnica potrivită și o justifici.
Harta nivelurilor
Clasa a VII-a finalizează Nivel 3 — Tehnici de bază și intră adânc în Nivel 4 — Structuri și generări.
- Nivel 3 — Tehnici de bază: two pointers, difference arrays, secvența de sumă maximă, Greedy.
- Nivel 4 — Structuri și generări: funcții,
struct, STL, stiva.
Traseul pe capitole
1. Funcții
- Ce înveți / de ce contează: declarare, definire, apel, variabile locale/globale, transmitere prin valoare și prin referință. Înveți să spargi o problemă în funcții mici, testabile.
- Deblochează: recursivitatea, backtracking-ul și orice cod mare care altfel ar deveni de necitit.
2. Tehnici pe tablouri
- Ce înveți / de ce contează: Two Pointers, Difference Arrays 1D, secvența de sumă maximă (Kadane), elementul majoritar, sume parțiale în matrice. Trusa grea de tehnici liniare.
- Deblochează: optimizările de tip „din O(n²) în O(n)"; lecția-punte „invariantul unui algoritm" îți dă instrumentul de a demonstra că o tehnică e corectă.
3. Structuri de date neomogene
- Ce înveți / de ce contează: tipul
struct, vectori de structuri, sortarea lor. Înveți să grupezi date care țin împreună (nume + scor + vârstă). - Deblochează: sortarea după criterii multiple și aproape orice problemă „cu obiecte" — intervale, evenimente, jucători.
4. STL pentru sortare și căutare
- Ce înveți / de ce contează:
sort, comparatori,binary_search,lower_bound,upper_bound. Nu mai reinventezi roata — folosești biblioteca standard corect și rapid. - Deblochează: Greedy-ul cu sortare și majoritatea soluțiilor de concurs care încep cu „sortăm, apoi...".
5. Greedy
- Ce înveți / de ce contează: ideea de alegere local-optimă, Greedy cu sortare, Greedy pe intervale. Prima metodă algoritmică unde demonstrația contează la fel de mult ca implementarea.
- Deblochează: gândirea de optimizare; lecția-punte „cum justifici corectitudinea" te ferește de Greedy-uri care par bune dar sunt greșite.
6. Numere mari — Etapă națională (opțional, dar recomandat)
- Ce înveți / de ce contează: reprezentare pe vector de cifre, adunare, scădere, înmulțire/împărțire cu un număr natural. Calculezi cu numere care nu încap în niciun tip.
- Deblochează: factoriale uriașe, puteri mari, probleme „afișați numărul exact" fără modulo.
7. Exponențiere rapidă — Etapă națională (opțional, dar recomandat)
- Ce înveți / de ce contează: ridicare la putere în timp logaritmic și exponențiere modulo. Treci de la
nînmulțiri lalog n. - Deblochează: invers modular, recurențe cu matrici și orice problemă cu puteri mari.
8. Stiva — Etapă națională (opțional, dar recomandat)
- Ce înveți / de ce contează: noțiunea de stivă, operații, paranteze corecte, elementul următor mai mare/mic (stivă monotonă). Memoria „LIFO" care reține ce e nerezolvat.
- Deblochează: evaluarea expresiilor, stiva monotonă din probleme grele și pregătirea pentru coadă/deque din clasa a VIII-a.
Borne / checkpoints
- După Funcții + Tehnici pe tablouri: rezolvi „cea mai mare sumă a unei subsecvențe" și aplici difference arrays pentru actualizări pe intervale.
- După Struct + STL: sortezi un vector de structuri după două criterii și cauți rapid cu
lower_bound. - După Greedy: rezolvi „numărul maxim de activități care nu se suprapun" și poți explica de ce alegerea ta e optimă.
- După extensii (numere mari / exponențiere / stivă): calculezi
n!exact pentrunmare și verifici un șir de paranteze cu stiva — clasice de OJI clasa a VII-a la națională.
Traseul olimpicului
Capitolele 1–5 sunt nucleul. Numere mari, Exponențiere rapidă și Stiva sunt extensii naționale și sunt exact zonele care fac diferența la baremul mare. Sfat: nu trata Greedy ca pe o ghicitoare — pentru fiecare soluție Greedy, scrie-ți într-o frază argumentul (schimbul / invariantul). Iar stiva monotonă merită exersată separat: e o idee care apare an de an la concursuri.
Capcane de parcurs
- Greedy „din intuiție", fără demonstrație. E capcana clasică: pare corect, dar pică pe un test. Lecția-punte de justificare e pusă tocmai ca să-ți formezi reflexul de a verifica.
- Eviți funcțiile și scrii totul într-un
mainuriaș. Fără funcții, recursivitatea de anul viitor devine imposibilă. Capitolul 1 e primul tocmai din acest motiv. - Folosești bucle pătratice unde STL-ul oferă
sort+lower_bound. Roadmap-ul pune STL înainte de Greedy ca să intri în metodele algoritmice deja înarmat cu unelte rapide.