Se dă o matrice cu linii și coloane. De asemenea, se dau operații de tipuri, pe care va trebui să le procesați în ordine. Cele tipuri de operații sunt definite astfel:
- - valoarea elementului aflat pe linia și coloana va deveni .
- - afișați scorul submatricei cu colțurile în celulele , respectiv .
Scorul unei submatrice cu colțurile în celulele , respectiv este calculat astfel:
- Se pot permuta oricum coloanele submatricei. (Această permutare nu va persista la următoarele operații.)
- După pasul anterior, se va alege un drum de lungime minimă cu capetele în celulele , respectiv . Un drum este format dintr-o succesiune de celule distincte, unde oricare două celule consecutive din drum sunt adiacente pe linie sau pe coloană.
- Scorul submatricei este egal cu valoarea minimă posibilă a medianei numerelor dintr-un drum construit la pasul anterior.
Definim mediana unui șir de numere cu elemente, numerotate de la la , ca fiind elementul aflat pe poziția în urma sortării șirului. De exemplu, mediana șirului este , iar mediana șirului este .
Cerință
Se cere să se determine scorul submatricei date pentru fiecare operație de tip .
Date de intrare
Pe prima linie se vor afla două numere și - numărul de coloane din matrice, respectiv numărul de operații.
Pe a doua linie se vor afla numere, reprezentând valorile inițiale ale elementelor de pe prima linie a matricei.
Pe a treia linie se vor afla numere, reprezentând valorile inițiale ale elementelor de pe a doua linie a matricei.
Pe următoarele linii se vor afla descrierile operațiilor, câte un una pe fiecare pe linie. Fiecare dintre următoarele linii va avea unul dintre următoarele formaturi:
- .
Toate valorile de pe aceeași linie sunt separate prin câte un spațiu.
Date de ieșire
Pentru fiecare operație de tipul se va afișa răspunsul pe câte o linie.
Restricții și precizări
- Pentru toate operațiile de tipul :
- ,
- Pentru toate operațiile de tipul :
# | Scor | Restricții |
---|---|---|
1 | 7 | |
2 | 12 | |
3 | 5 | ; pentru toate operațiile de tipul , |
4 | 28 | Nu există operații de tipul |
5 | 23 | |
6 | 16 | |
7 | 9 | Fără restricții adiționale |
Exemplul 1
stdin
6 7
10 6 9 5 1 6
6 9 10 3 3 1
2 1 6
2 3 3
1 2 4 6
2 1 6
1 2 5 4
1 1 5 9
2 4 6
stdout
3
9
5
4
Explicație
Pentru prima operație este optim să permutăm coloanele matricei în următorul mod:
Mediana minimă a unui drum din celula în celula este , obținută din drumul conținând celulele cu valorile .
Exemplul 2
stdin
8 9
2 1 2 2 1 1 2 2
1 2 1 2 2 1 2 1
2 1 8
1 1 2 2
2 4 5
2 5 5
1 1 6 2
2 4 7
2 5 8
1 2 3 2
2 1 3
stdout
1
2
1
2
1
2
Explicație
Acest test se încadrează în subtask-ul .
Exemplul 3
stdin
7 6
5 1 4 9 10 3 3
4 1 9 6 5 10 4
2 1 7
2 2 4
2 5 6
2 3 3
2 4 6
2 6 7
stdout
3
1
5
4
5
3
Explicație
Acest test se încadrează în subtask-ul .