Se consideră matricea cu linii (numerotate de la la ) și coloane (numerotate de la la ) ce conține numere întregi.
O submatrice a matricei este definită prin linia și coloana colțului stânga-sus , respectiv linia și coloana colțului dreapta-jos , cu și și conține toate elementele de pe pozițiile ale matricei pentru care și . În particular, submatricea cu colțul stânga-sus în și colțul dreapta-jos în este identică cu matricea .
Pentru fiecare linie a unei submatrice date, se calculează suma pe linie prin adunarea elementelor aflate pe aceasta. Sumele obținute pentru fiecare dintre liniile acestei submatrice formează termenii unui șir, numit șirul al sumelor pe linii. Spunem că submatricea este aprogressive dacă și și șirul al sumelor pe linii poate fi rearanjat pentru a forma, cu toți termenii săi, o progresie aritmetică de rație nenulă .
Forma comprimată a unei submatrice cu colțul stânga-sus și colțul dreapta-jos se notează cu și se definește astfel:
- dacă (este o submatrice linie) sau dacă (este o submatrice coloană) atunci forma sa comprimată este = . În caz contrar,
- dacă este aprogressive, forma sa comprimată este = . În caz contrar,
- se împarte în submatrice , , , cu mulțimi disjuncte de elemente după cum este ilustrat în figura alăturată, unde submatricea are colțul stânga-sus în , iar colțul dreapta-jos în , reprezentând partea întreagă a numărului real . Forma comprimată a submatricei este definită recursiv =.
De exemplu, matricea din figura alăturată pentru că are , , , , , se comprimă urmând raționamentul de mai jos.
Pentru că nu este nici matrice-linie și nici matrice-coloană, se determină pentru matricea șirul al sumelor pe linii, anume: . Pentru că nu este matrice aprogressive, matricea va fi împărțită în submatricele:
- – cu colțurile stânga-sus, respectiv dreapta-jos ;
- – cu colțurile stânga-sus, respectiv dreapta-jos ;
- – cu colțurile stânga-sus, respectiv dreapta-jos ;
- – cu colțurile stânga-sus, respectiv dreapta-jos ;
Pentru submatricea șirul al sumelor pe linii este: , care, prin rearanjare, formează o progresie aritmetică cu rația . Forma comprimată a submatricei este = .
Pentru submatricea șirul al sumelor pe linii este: , care, prin rearanjare, formează o progresie aritmetică cu rația . Forma comprimată a submatricei este = .
Pentru submatricea șirul al sumelor pe linii este: , care, prin rearanjare, formează o progresie aritmetică dar cu rația . Pentru această submatrice se reia procedeul de împărțire. Forma comprimată a submatricei este = .
Pentru submatricea șirul al sumelor pe linii este: , care, prin reanjare formează o progresie aritmetică cu rația . Forma comprimată a submatricei este = .
Astfel, forma comprimată a matricei este: ((1,1,3,3,3)(1,4,3,5,2)((4,1,4,2,0)(4,3,4,3,0)(5,1,5,2,0)(5,3,5,3,0))(4,4,5,5,2))
.
Cerință
Cunoscând dimensiunile și elementele matricei să se determine:
- Indicii liniilor matricei pentru care suma elementelor aflate pe fiecare dintre acestea este maximă.
- Indicii liniilor matricei pentru care elementele pot fi rearanjate astfel încât să formeze pe linia respectivă, o progresie aritmetică de rație nenulă.
- Forma comprimată a matricei .
Date de intrare
Fișierul de intrare aprogressive.in
conține pe prima linie numărul reprezentând cerința care trebuie rezolvată.
Pe a doua linie se află numerele naturale și cu semnificația din enunț.
Pe fiecare dintre următoarele linii se află câte numere întregi ce reprezintă elementele matricei .
Numerele aflate pe aceeași linie a fișierului de intrare sunt separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire aprogressive.out
va conține fie răspunsul pentru cerința (dacă ), fie răspunsul pentru cerința (dacă ), fie răspunsul pentru cerința (dacă ).
Pentru cerința se vor afișa, fiecare pe câte un rând, în ordine strict crescătoare, indicii determinați pentru cerința .
Pentru cerința se vor afișa, fiecare pe câte un rând, în ordine strict crescătoare, indicii determinați pentru cerința , iar dacă nu există linii care să respecte cerința, se va afișa .
Pentru cerința se va afișa forma comprimată a matricei , pe un singur rând, fără spații, cu valorile separate prin câte o virgulă, încadrate corespunzător între paranteze rotunde.
Restricții și precizări
- ;
- ;
- Elementele matricei aparțin intervalului [].
# | Punctaj | Restricții |
---|---|---|
1 | 20 | |
2 | 25 | |
3 | 25 | și |
4 | 30 |
Exemplul 1
aprogressive.in
1
3 4
6 3 7 4
3 1 4 2
2 6 4 8
aprogressive.out
1
3
Explicație
, , . Se rezolvă cerința .
Suma pe linia este egală cu . Suma pe linia este egală cu . Suma pe linia este egală cu .
Se afișează indicii liniilor și , în această ordine, deoarece pe aceste linii suma este maximă.
Exemplul 2
aprogressive.in
2
3 4
6 3 7 4
3 1 4 2
2 6 4 8
aprogressive.out
2
3
Explicație
, , . Se rezolvă cerința .
Elementele liniei pot fi rearanjate astfel încât să formeze o progresie aritmetică cu rația : .
Elementele liniei pot fi rearanjate astfel încât să formeze o progresie aritmetică cu rația : .
Se afișează indicii liniilor și , în această ordine.
Exemplul 3
aprogressive.in
3
5 5
2 1 1 3 2
3 2 5 4 5
1 4 2 1 6
2 2 1 2 1
1 3 1 2 3
aprogressive.out
((1,1,3,3,3)(1,4,3,5,2)((4,1,4,2,0)(4,3,4,3,0)(5,1,5,2,0)(5,3,5,3,0))(4,4,5,5,2))
Explicație
, , . Se rezolvă cerința .
Răspunsul de la această cerință se afisează pe o singură linie în fișierul de ieșire.
Etapele de obținere a răspunsului sunt explicate în enunț.