cifru

Time limit: 0.05s Memory limit: 4MB Input: cifru.in Output: cifru.out

Marele erou Ben10 se află din nou în postura de a salva lumea. De data aceasta el trebuie să dezamorseze o bombă de mare putere, a cărei explozie ar putea distruge omenirea. Dificultatea sarcinii constă în faptul că bomba este protejată printr-un dispozitiv complicat, cu cifru, compus din N×NN \times N butoane aşezate sub forma unui tablou cu NN linii şi NN coloane, fiecare buton având înscris un număr natural, aşa cum se vede în Figura 1\text{Figura} \ 1.

Dispozitivul conţine mai multe rame mobile (reprezentate în figură prin pătrate concentrice haşurate diferit), care se pot roti cu 9090, 180180, 270270 sau 360360 de grade spre stânga sau spre dreapta, modificând astfel modul de dispunere a numerelor înscrise pe butoanele dispozitivului. Pentru exemplul din Figura 1\text{Figura} \ 1, avem un număr de 33 rame, reprezentate în figură prin culori de fond diferite.
Bomba se dezamorsează dacă suma elementelor de pe prima linie (cea din nord) a fiecărei rame este maximă (zona haşurată din Figura 2\text{Figura} \ 2). Convenim să numim această porţiune a tabloului zona de nord.

Cerinţă

Scrieţi un program care să determine suma elementelor din zona de nord a tabloului, atunci când ramele cifrului au fost aduse în poziţia ce dezamorsează bomba, precum şi configuraţia tabloului.

Date de intrare

Fişierul de intrare cifru.in conţine:
Pe prima linie numărul natural NN, reprezentând numărul liniilor şi coloanelor tabloului.
Pe fiecare din următoarele NN linii se află câte NN numere naturale, separate prin spaţiu, reprezentând numerele înscrise pe butoanele dispozitivului.

Date de ieşire

Fişierul de ieşire cifru.out va conţine pe prima linie un număr natural SS reprezentând suma maximă posibil de obţinut în zona de nord a tabloului. Pe următoarele NN linii se vor afişa elementele tabloului obţinut prin rotaţia ramelor în poziţia ce dezamorsează bomba (câte NN elemente separate prin câte un spaţiu).

Restricţii şi precizări

  • 1<N<1011 \lt N \lt 101
  • Numerele înscrise pe butoanele cifrului sunt numere naturale între 00 şi 1 0001 \ 000.
  • O ramă este compusă din cel puţin 22 linii şi 22 coloane.
  • Se garantează că, pentru fiecare ramă, suma maximă se poate obţine pe o singură latură.

Exemplu

cifru.in

5
5 1 1 1 4
5 0 0 0 2
5 1 0 2 2
5 2 3 4 2
7 3 3 3 8

cifru.out

36
7 5 5 5 5
3 4 3 2 1
3 2 0 1 1
3 0 0 0 1
8 2 2 2 4

Explicaţie

Cifrul din exemplu este compus din două rame. Prima ramă, cea exterioară, a fost rotită cu 9090 de grade spre stânga, iar a doua ramă a fost rotită cu 180180 de grade spre stânga sau spre dreapta.
Suma elementelor îngroşate este 3636, fiind cea mai mare sumă posibil de obţinut prin rotirea în toate modurile a celor două rame.

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