Graba

Time limit: 2s Memory limit: 512MB Input: graba.in Output: graba.out

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 ff cu NN argumente de tip întreg x1,,xNx_1, \ldots, x_N care returnează un întreg. Pentru a îi îngreuna misiunea, tema include MM constrângeri suplimentare pe care funcția ff trebuie să le satisfacă, specificate printr-o matrice de dimensiuni M×(N+1)M × (N + 1), notată cu AA, ale cărei linii și coloane sunt numerotate de la 11 la MM și respectiv de la 11 la N+1N + 1. Cea de-a ii-a constrângere pentru 1iM1 \leq i \leq M este că f(Ai,1,,Ai,N)=Ai,N+1f(A_{i,1}, \ldots, A_{i,N}) = A_{i,N + 1} . 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 ff pentru el.

Deoarece cunoștințele lui Mutu sunt încă limitate, funcția ff trebuie să se încadreze în materia predată, altminteri Surdu își va da seama de tentativa de fraudă. Așadar, funcția ff trebuie să respecte următorul format, din care Mutu nu poate alege decât numărul ll și tripletele (i1,j1,k1)(i_1, j_1, k_1), (i2,j2,k2)(i_2, j_2, k_2), \ldots, (il,jl,kl)(i_l, j_l, k_l):

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 NN, MM și matricea AA determinați ll și ll triplete (i1,j1,k1)(i_1, j_1, k_1), \ldots, (il,jl,kl)(i_l, j_l, k_l) astfel încât funcția ff definită mai sus să satisfacă cele MM 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ă NN și MM. Următoarele MM linii conțin câte N+1N + 1 numere întregi, al jj-lea număr de pe a ii-a dintre aceste linii reprezentând elementul Ai,jA_{i,j} 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 ll linii, dintre care a xx-a linie pentru 1xl1 \leq x \leq l va conține numerele ix,jx,kxi_x, j_x, k_x, separate prin spații.

Restricții și precizări

  • 1NM1 000 0001 \leq N \cdot M \leq 1 \ 000 \ 000
  • 0Ai,j1 000 0000 \leq A_{i,j} \leq 1 \ 000 \ 000 pentru 1iM1 \leq i \leq M și 1jN+11 \leq j \leq N + 1
  • 1ixN1 \leq i_x \leq N pentru 1xl1 \leq x \leq l
  • 0jx,kx1 000 0000 \leq j_x, k_x \leq 1 \ 000 \ 000 pentru 1xl1 \leq x \leq l
  • 1l2 000 0001 \leq l \leq 2 \ 000 \ 000. Se garantează că în cazul în care există soluție, aceasta se poate obține cu cel mult 2 000 0002\ 000\ 000 de triplete.
# Punctaj Restricții
1 11 NM50N \cdot M \leq 50
2 23 NM200 000N \cdot M \leq 200 \ 000
3 18 NM500 000N \cdot M \leq 500 \ 000
4 49 Fără restricții suplimentare

Notă: Subtaskul 4 conține două grupe de teste, în valoare de 2929 și respectiv 1919 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 l=3l = 3 triplete (4,9,0)(4, 9, 0), (2,2,4)(2, 2, 4) și (1,3,2)(1, 3, 2), ducând la următoarea funcție ff cu N=4N = 4 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 M=3M = 3 constrângeri date:

  • f(3,2,3,4)=4f(3, 2, 3, 4) = 4
  • f(8,2,2,5)=4f(8, 2, 2, 5) = 4
  • f(3,3,3,6)=2f(3, 3, 3, 6) = 2

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 ff de forma dată nu respectă cele M=4M = 4 constrângeri date.

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