yinyang

Time limit: 0.2s Memory limit: 64MB Input: yinyang.in Output: yinyang.outPoints by default: 10p

Se dă o matrice AA cu NN linii și MM coloane, cu valori cuprinse între 11 și NMN \cdot M inclusiv, nu neapărat distincte. O operație constă în selectarea a două linii sau două coloane consecutive și interschimbarea acestora (swap). O matrice yin-yang este o matrice în care A[i][j]A[i][j1]A[i][j] \geq A[i][j – 1], pentru orice pereche (i,j)(i, j) cu 1iN1 \leq i \leq N și 2jM2 \leq j \leq M și A[i][j]A[i1][j]A[i][j] \geq A[i – 1][j], pentru orice pereche (i,j)(i, j) cu 2iN2 \leq i \leq N și 1jM1 \leq j \leq M.

Cerinţă

Să se determine numărul minim de operații necesare pentru a transforma matricea dată într-o matrice yin-yang.

Date de intrare

În fișierul de intrare yinyang.in se află scrise pe prima linie numerele naturale NN și MM, cu semnificația din enunț. Pe fiecare dintre următoarele NN linii se află câte MM numere naturale, reprezentând elementele matricei date AA. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.

Date de ieșire

În fișierul yinyang.out se va scrie numărul minim de operații cerut sau 1-1 dacă nu există soluție.

Restricții și precizări

  • 1N,M1001 \leq N, M \leq 100;
  • Pentru teste în valoare de 99 puncte: 1N,M51 \leq N, M \leq 5;
  • Pentru alte teste în valoare de 1818 puncte: N=1N = 1;
  • Pentru alte teste în valoare de 3636 de puncte elementele din matrice sunt DISTINCTE.

Exemplul 1

yinyang.in

2 3
1 2 4
3 5 6

yinyang.out

0

Explicație

Matricea dată este matrice yin-yang.

Exemplul 2

yinyang.in

2 3
6 6 5
4 6 2

yinyang.out

3

Explicație

Operațiile pot fi următoarele:

  • swap(linia 1, linia 2);
  • swap(coloana 2, coloana 3);
  • swap(coloana 1, coloana 2).

Matricea dată va ajunge la final în forma yin-yang:

Log in or sign up to be able to send submissions!