← Subiecte de Titularizare
Titularizare 2025 · Subiectul II, problema 2

Numărare pe date ordonate — simulator

II.1 subprogram Liste Șiruri caractere Matrice Backtracking
II.2 eficient Greedy intervale Reuniune Interclasare LIS LIS tije LCS Kadane Frecvențe Căutare binară
pas 0 / 0
📋 Enunțul problemei (Titularizare 2025)

La cabinetul unui medic, fiecare programare e codificată prin alipirea a două numere: ziua și ora. Fiecare consultație începe la oră fixă (de la 08 la 20) și durează 50 de minute.

Fișierul titu2025.txt conține cel mult 10⁵ coduri din [108, 3120], ordonate crescător. Se cere numărul de programări care trebuie actualizate din cauza suprapunerii. Algoritm eficient ca timp și memorie.

Exemplu: pentru 912 912 912 1009 1418 1418 1520 1618 se afișează 3.

Observația care simplifică tot: o consultație ține 50 de minute, adică mai puțin de o oră. Deci două programări se suprapun numai dacă au exact același cod — aceeași zi și aceeași oră. Ore consecutive nu se suprapun niciodată.

startApasă „Pas înainte”. Șirul e deja ordonat, deci valorile egale sunt alăturate: e destul să compar fiecare cod cu cel dinaintea lui.

Codurile din fișier deja ordonate crescător

codul curent codul anterior suprapunere → se numără fără suprapunere

Starea algoritmului comparația cu precedentul

Codul C++ linia activă e evidențiată

Cod C++

    

Algoritmul în limbaj natural pasul curent e evidențiat