turnuri

Time limit: 0.4s Memory limit: 16MB Input: turnuri.in Output: turnuri.out

Într-un tablou bidimensional de dimensiuni date mm (numărul de linii) şi nn (numărul de coloane) există în fiecare celulă o valoare 00 sau 11. Un turn este format numai din valori 11 vecine, de pe aceeaşi coloană, numărul acestor valori egale cu 11 reprezentând înălţimea turnului. Se consideră că pe o coloană nu există alte valori egale cu 1 în afara celor care intră în componenţa unui turn.

Fiecare coloană poate conţine câte un singur turn. Dacă o coloană are numai valori 00, se consideră totuşi că acea coloană conţine un turn de înălţime 00. Dacă o coloană are una sau mai multe valori 11, atunci una dintre ele este obligatoriu plasată pe ultima linie.

Luând pe rând toate perechile formate din câte 22 turnuri aflate pe coloane vecine, este posibilă următoarea operaţie de reconfigurare: din 22 turnuri de înălţime nenulă, de pe 22 coloane vecine se poate forma un nou turn cu înălţimea egală cu suma celor două. Dorim astfel să obţinem în final numărul maxim de turnuri de înălţime maximă. Există însă două condiţii care trebuie respectate:

  • înălţimea noului turn format nu poate depăşi valoarea mm (numărul de linii ale tabloului);
  • orice turn care a contribuit la formarea unui turn de înălţime maximă nu mai poate contribui şi la formarea unui alt turn de înălţime maximă.

Operaţia de reconfigurare se efectuează o singură dată.

Cerință

Dându-se tabloul bidimensional cu mm linii şi nn coloane cu valori 00 şi 11, se cere:

  1. Să se afişeze înălţimile turnurilor din configuraţia iniţială, precizându-se şi turnurile cu înălţime 00, începând cu cel mai din stânga turn
  2. Să se afişeze înălţimea maximă a turnurilor rezultate după operaţia de reconfigurare
  3. Să se afişeze numărul maxim de turnuri de înălţime maximă, rezultate după operaţia de reconfigurare

Date de intrare

Fişierul de intrare turnuri.in va conţine:

  • pe prima linie din fişier se află numărul natural mm care reprezintă numărul de linii şi numărul natural nn care reprezintă numărul de coloane, valori separate între ele printr-un spaţiu
  • pe următoarele mm linii câte n valori 00 sau 11, separate două câte două printr-un spaţiu

Date de ieșire

Fişierul de ieşire turnuri.out va conţine trei linii:

  • pe prima linie se află înălţimile iniţiale ale turnurilor, valori separate două câte două printr-un spaţiu
  • pe a doua linie se află înălţimea maximă a turnurilor rezultate după operaţia de reconfigurare
  • pe a treia linie se află numărul maxim de turnuri de înălţime maximă, rezultate după operaţia de reconfigurare

Restricții și precizări

  • 2m,n1 0002 \leq m, n \leq 1 \ 000;
  • Testele si restricțiile au fost refăcute pentru standardele anului 20232023
  • Se acordă punctaje parţiale: cerinţa a) 4040% din punctaj, cerinţa b) 4040% din punctaj, cerinţa c) 2020%.
  • Toate turnurile incep de pe ultima linie a matricii.

Exemplul 1

turnuri.in

6 6
0 0 0 0 0 0
1 0 0 0 0 0
1 0 1 0 0 0
1 0 1 1 0 1
1 0 1 1 1 1
1 0 1 1 1 1 

turnuri.out

5 0 4 3 2 3
5
2

Explicație

Avem 66 turnuri: primul, cel mai din stânga, are înălţimea 55, următorul 00, următorul 44, următorul 33, următorul 22 şi ultimul 33.

Înălţimea maximă este 55 şi se obţine din valoarea iniţială a turnului 11, precum şi din combinarea ultimului turn cu penultimul sau a penultimului turn cu antepenultimul.

Observaţie: turnul de pe coloana 55 (penultimul) contribuie la formarea unui singur turn de înălţime maximă, fie cu turnul din coloana 44 (antepenultimul), fie cu cel din coloana 66 (ultimul), dar nu cu amândouă simultan. Astfel numărul de turnuri de înălţime maximă este 22 (unul iniţial şi unul format din ultimele două turnuri (sau din penultimul şi antepenultimul)). De asemenea, dacă s-ar combina al treilea turn cu al patrulea ar rezulta un turn cu înălţimea 77, valoare mai mare decât numărul de linii din tablou (66), ceea ce înseamnă operaţie nepermisă

Exemplul 2

turnuri.in

4 4
0 0 0 0
0 0 0 0
1 0 1 0
1 1 1 1

turnuri.out

2 1 2 1
3
2

Explicație

Avem 44 turnuri cu înălţimile iniţiale: 2,1,2,12, 1, 2, 1.
Înălţimea maximă este 33 şi se obţine din combinarea turnurilor 11 şi 22, respectiv 33 cu 44.

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