margi

Time limit: 0.06s Memory limit: 128MB Input: margi.in Output: margi.out

În săptămâna Altfel - ”Să știi mai multe, să fii mai bun”, elevii AA și BB se joacă un joc altfel, joc numit „margi”. Cei doi au la dispoziție o matrice pătratică binară de dimensiune 2n2^n.

Desfășurarea jocului este următoarea:

  • jocul începe la nivelul nn, când se împarte matricea inițială în 44 matrici disjuncte de dimensiunea 2n12^{n-1};
  • fiecare dintre cei doi jucători alege o matrice dintre cele 44 și adună la punctajul său numărul de valori de 11 conținut de matricea aleasă. Dacă ambii jucători aleg aceeași matrice doar jucătorul AA adună la punctajul său numărul de valori de 11 din matrice;
  • pentru fiecare nivel, după împărțirea matricei inițiale, matricele rezultate vor fi numerotate asemănător figurii alăturate;
  • la nivelul n1n - 1 fiecare dintre matricele alese de jucători se împart în 44 matrici disjuncte de dimensiunea 2n22^{n-2}. Fiecare dintre cei doi jucători aleg o matrice din cele noi formate.
  • pentru fiecare nivel jucat fiecare jucător trebuie să aleagă o matrice;
  • jocul continua cu nivelele n2n-2, n3n-3, etc;
  • jocul se termină când dimensiunea matricelor alese este 11;

Scopul jocului este obținerea sumei maxim posibile prin adunarea punctajelor celor doi jucători. Dacă există mai multe posibilități de obținere a acestei sume, fiecare jucător va alege matricele cu număr de ordine mai mic. Exemplu: pentru n=3n=3, vom simula un joc:

  • Jucătorul AA

Alege matricea ce are colțul stânga-sus în (1,11, 1), numerotat cu 11. Punctaj SumA=7Sum_A = 7.

  • Jucătorul BB

Alege matricea ce are colțul stânga-sus în (5,15, 1), numerotat cu 33. Punctaj SumB=5Sum_B = 5.

  • Jucătorul AA

Alege matricea ce are colțul stânga-sus în (1,11, 1), numerotat cu 11. Punctaj SumA=7+3=10Sum_A = 7 + 3 = 10

  • Jucătorul BB

Alege matricea ce are colțul stânga-sus în (7,17, 1), numerotat cu 33. Punctaj SumB=5+3=8Sum_B = 5 + 3 = 8

  • Jucătorul AA

Alege matricea ce are colțul stânga-sus în (1,21, 2), numerotat cu 22. Punctaj SumA=10+1=11Sum_A = 10 + 1 = 11.
Jucătorul AA a obținut SumA=11Sum_A = 11, secvența alegerilor efectuate fiind: 11, 11, 22.

  • Jucătorul BB

Alege matricea ce are colțul stânga-sus în (7,27, 2), numerotat cu 22. Punctaj SumB=8+1=9Sum_B = 8 + 1 = 9

Jucătorul BB a obținut SumB=9Sum_B = 9, secvența alegerilor efectuate fiind: 33, 33, 22.

Cerinţă

Pentru un nn număr natural dat și o matrice binară de dimensiunea 2n2^n, se cere să se determine punctajul maxim obținut de cei doi jucători. Se cere și determinarea unei strategii de alegere a matricelor la fiecare pas care să ducă la obținerea punctajului maxim.

Date de intrare

Fişierul de intrare margi.in conţine pe prima linie un număr natural CC. Pe linia a doua se află un număr natural nn. Pe următoarele 2n2^n linii, elementele matricei binare.

Date de ieșire

Fişierul de ieșire margi.out conţine pe prima linie suma maximă care se poate obține prin însumarea punctajelor celor doi jucători. În cazul în care C=1C = 1 în fișierul de ieșire va apărea doar această valoare. Dacă C=2C = 2 fișierul de ieșire va conține, în continuare:

Pe cea de-a doua linie se vor scrie nn numere ce reprezintă secvența de matrici alese de jucătorul AA.
Pe cea de-a treia linie se vor scrie nn numere ce reprezintă secvența de matrici alese de jucătorul BB.
Secvențele de matrici alese de cei doi trebuie să respecte următoarele două condiții:

  1. suma celor două punctaje obținute de cei doi jucători este maximă. Pot exista mai multe secvențe de matrici care au suma maximă.
  2. Fie AnA_n, An1A_{n-1}, \dots, A1A_1 secvențele de matrici alese de AA, respectiv BnB_n, Bn1B_{n-1}, \dots, B1B_1, secvențele de matrici alese de BB, la nivelele nn, n1n-1, \dots, 22, 11. Dacă compunem șirul AnA_n, BnB_n, An1A_{n-1}, Bn1B_{n-1}, An2A_{n-2}, Bn2B_{n-2}, \dots, A1A_1, B1B_1, dintre toate șirurile posibile care dau suma maximă, trebuie ales cel șirul minim lexicografic.

Restricții și precizări

  • CC poate fi 11 sau 22
  • 2n102 \leq n \leq 10
  • Spunem că șirul XX este mai mic lexicografic decât șirul YY, dacă există o poziție ii, astfel încât X1X_1 = Y1Y_1, X2X_2 = Y2Y_2, \dots, Xi1X_{i-1} = Yi1Y_{i-1}, iar XiX_i < YiY_i.
  • Pentru teste în valoare de 3030 de puncte avem C=1C = 1.

Exemplul 1

margi.in

1
2
0000
0100
0000
0000

margi.out

2

Explicație

Suma maximă = (00 + 11) + (00 + 11) = 22. Dacă am fi avut C=2C = 2, pe liniile 22 și 33 ar mai fi apărut:

1 1
1 4

Exemplul 2

margi.in

2
3
01001100
11100011
00101000
11000000
00000000
01100100
01000000
11000010

margi.out

20
1 1 2
3 3 2

Explicație

Suma maximă = (7+57 + 5) + (3+33 + 3) + (1+11 + 1) = 2020. Exemplul din figura de mai sus.

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