ConcursC++17

revolutie

În ţara Utopia a avut loc recent o revoluţie digitală, în urma căreia s-a hotărât să se întrerupă serviciile de telefonie mobilă. Din fericire, Miruna s-a infiltrat în sediul central al principalului furnizor de telefonie din Utopia. Pentru a repune în funcţiune reţeaua, Miruna trebuie să treacă de un filtru de autentificare: ea are în faţă o matrice pătratică de dimensiune N având elemente din mulţimea {0, 1}. Asupra acestei matrice se pot efectua următoarele operaţii:

  • se aleg două linii şi se interschimbă;
  • se aleg două coloane şi se interschimbă.

Pentru a trece de filtrul de autentificare Miruna trebuie să obţină pe diagonala principală (toate elementele de forma A[i][i]) valori egale cu 1.

Cerinţă

Determinaţi pentru Miruna o secvenţă de maxim 4*N operaţii astfel încât să reuşească să treacă de filtrul de autentificare.

Date de intrare

Fişierul de intrare revolutie.in va conţine pe prima linie numărul N, reprezentând dimensiunea matricei. Pe următoarele N linii se află câte N valori din mulţimea {0, 1} reprezentând valorile matricei.

Date de ieşire

Fişierul de ieşire revolutie.out va conţine pe prima linie un singur număr întreg T reprezentând numărul de operaţii efectuate. Fiecare din următoarele T linii va descrie câte o operaţie: primul caracter de pe linie va fi L dacă s-a aplicat o operaţie asupra liniilor şiC dacă s-a aplicat o operaţie asupra coloanelor. Vor urma două valori între 1 şi N reprezentând indicii liniilor/coloanelor interschimbate. În caz că nu există soluţie, se va afişa valoarea -1.

Restricţii şi precizări

  • 1 ≤ N ≤ 127
  • Liniile şi coloanele sunt numerotate de la 1 la N
  • T trebuie să aparţină intervalului [0, 4*N]
  • 30% dintre fişierele de test vor avea 1 ≤ N ≤ 10
  • În cazul în care există mai multe soluţii, se va afişa oricare dintre ele
  • Miruna se opune fenomenului de “politically correctness”

Exemplu

revolutie.in

2
0 1
1 0	

revolutie.out

1
L 1 2	

Explicaţie

Interschimbând primele două linii obţinem matricea:

1 0
0 1

Sursă și autori

ONI 2009, clasele 11, 12. Andrei Grigorean.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑