Se consideră o matrice cu linii şi coloane cu elemente distincte din mulţimea . Liniile şi respectiv coloanele sunt numerotate de la la .
Vom nota cu coloana pe care se află elementul maxim pe linia a matricei. Spunem că matricea este monotonă dacă pentru orice , .
Fie o submulţime de linii ale matricei, iar o submulţime de coloane. O submatrice a matricei este formată din elementele , unde , iar .
Spunem că matricea este total monotonă dacă orice submatrice a ei este monotonă.
De exemplu, matricea din figura este total monotonă, valorile maxime de pe fiecare linie fiind îngroşate. Matricea din figura nu este total monotonă (am haşurat elementele unei submatrice care nu e monotonă).
Cerinţă
Se consideră o matrice total monotonă cu linii şi coloane care conţine valori distincte din mulţimea . Se cere să se determine pentru fiecare linie a matricei coloana pe care se află elementul maxim.
Interacţiune
Programul vostru nu va citi şi nu va scrie nimic. În schimb, va implementa funcția
std::vector<int> solve(int N);
ce primește ca parametru numǎrul natural , reprezentând dimensiunea matricei, și care returnează un vector (indexat de la ) ce va conține, în ordine, coloanele pe care se află valorile maxime de pe liniile .
În interioriul funcției solve
, puteți apela funcția
int query(int lin, int col);
ce va returna valoarea care se află în matrice pe linia şi coloana .
Restricții și precizări
- ;
- Dacă programul vostru va efectua cel mult interogări va primi punctajul maxim pe testul respectiv.
- Dacă programul vostru va efectua mai mult de interogări, dar nu mai mult de interogări, atunci veţi primi din punctajul testului respectiv
- Dacă programul vostru ajunge la rezultatul corect, dar foloseşte mai mult de interogări, atunci veţi primi din punctajul testului respectiv.
- Dacă programul vostru nu ajunge la răspunsul corect sau nu interacţionează corespunzător cu programul comisiei veţi primi puncte pe testul respectiv.
- Trebuie să includeți fișierul
matrix.h
.
Exemplu de interacţiune
Se apelează solve(2)
.
În solve
se apelează query(0, 0)
, care returnează .
În solve
se apelează query(1, 1)
, care returnează .
Funcția solve
returnează .