Mutu studiază limbajul C++ și tocmai a învățat despre funcții și instrucțiunea "if". Pentru a îi testa noile îndeletniciri, Surdu, profesorul său, i-a dat temă să scrie o funcție cu argumente de tip întreg care returnează un întreg. Pentru a îi îngreuna misiunea, tema include constrângeri suplimentare pe care funcția trebuie să le satisfacă, specificate printr-o matrice de dimensiuni , notată cu , ale cărei linii și coloane sunt numerotate de la la și respectiv de la la . Cea de-a -a constrângere pentru este că . Deoarece Mutu se grăbește să se califice în lotul național de informatică, el vă roagă pe voi să îi faceți tema: adică să scrieți funcția pentru el.
Deoarece cunoștințele lui Mutu sunt încă limitate, funcția trebuie să se încadreze în materia predată, altminteri Surdu își va da seama de tentativa de fraudă. Așadar, funcția trebuie să respecte următorul format, din care Mutu nu poate alege decât numărul și tripletele , , , :
int f(int x1, ..., int xN) {
if (xi1 == j1) return k1;
if (xi2 == j2) return k2;
...
if (xil == jl) return kl;
return -1;
}
Cerință
Date fiind , și matricea determinați și triplete , , astfel încât funcția definită mai sus să satisfacă cele constrângeri. În cazul în care nu există nicio soluție, precizați acest lucru.
Date de intrare
Pe prima linie a fișierului de intrare graba.in
se află și . Următoarele linii conțin câte numere întregi, al -lea număr de pe a -a dintre aceste linii reprezentând elementul al matricei.
Date de ieșire
Dacă nu există nicio soluție, fișierul de ieșire graba.out
va conține o singură linie cu -1
. Altfel, fișierul de ieșire va conține linii, dintre care a -a linie pentru va conține numerele , separate prin spații.
Restricții și precizări
- pentru și
- pentru
- pentru
- . Se garantează că în cazul în care există soluție, aceasta se poate obține cu cel mult de triplete.
# | Punctaj | Restricții |
---|---|---|
1 | 11 | |
2 | 23 | |
3 | 18 | |
4 | 48 | Fără restricții suplimentare |
Notă: Subtaskul 4 conține două grupe de teste, în valoare de și respectiv puncte
Exemplul 1
graba.in
4 3
3 2 3 4 4
8 2 2 5 4
3 3 3 6 2
graba.out
4 9 0
2 2 4
1 3 2
Explicație
Mutu alege triplete , și , ducând la următoarea funcție cu argumente:
int f(int x1, int x2, int x3, int x4) {
if (x4 == 9) return 0;
if (x2 == 2) return 4;
if (x1 == 3) return 2;
return -1;
}
Această funcție respectă cele constrângeri date:
Exemplul 2
graba.in
2 4
0 0 0
0 1 1
1 0 1
1 1 0
graba.out
-1
Explicație
Nicio funcție de forma dată nu respectă cele constrângeri date.