cristale

Time limit: 0.2s Memory limit: 4MB Input: cristale.in Output: cristale.out


Pietrele preţioase au fascinat omenirea încă din timpuri străvechi iar cele mai renumite dintre ele, cristalele, au devenit atât simbolul durităţii cât şi al eternităţii. În urma unui studiu ştiinţific, pe un eşantion de formă dreptunghiulară se pot observa diferite tipuri de molecule, dispuse într-o geometrie perfectă, pe MM rânduri a câte NN molecule fiecare, aliniate una lângă alta. O formaţiune cristalizabilă este alcătuită din 33 molecule de acelaşi tip, învecinate două câte două, având una dintre cele patru forme din imaginea alăturată (fig. 1).

Fiecare formaţiune este înconjurată de jur-împrejur, ca în fig. 2, de un înveliş special format şi el din molecule identice, de alt tip decât cele din formaţiunea cristalizabilă pe care o înconjoară şi o izolează de restul formaţiunilor moleculare. În acest fel, fiecare moleculă din formaţiunea cristalizabilă se învecinează la Nord, Sud, Est şi Vest cu o moleculă din aceeaşi formaţiune cristalizabilă sau cu o moleculă din învelişul special.
Fiecare formaţiune cristalizabilă se bombardează cu raze XX şi în acest fel are loc cristalizarea, proces prin care învelişul special se extinde peste formaţiunea cristalizabilă pe care o înconjoară, formând o singură structură din care se va dezvolta cristalul.

Cerinţă

  1. Determinaţi numărul formaţiunilor cristalizabile ce pot fi identificate pe eşantionul analizat.
  2. Afişaţi eşantionul rezultat după cristalizare.

Date de intrare

Fişierul de intrare cristale.in conţine pe prima linie un număr natural cc reprezentând cerinţa care trebuie să fie rezolvată (11 sau 22). Pe cea de-a doua linie se află două numere naturale MM şi NN, separate printr-un spaţiu, având semnificaţia din enunţ. Pe următoarele MM linii se află câte NN numere naturale, separate prin câte un spaţiu, reprezentând moleculele din eşantionul analizat.

Date de ieşire

Dacă valoarea lui cc este 11, atunci se va rezolva numai cerinţa 11, caz în care pe prima linie a fişierului cristale.out va fi scris un număr natural reprezentând numărul formaţiunilor cristalizabile identificate pe eşantionul analizat.
Dacă valoarea lui cc este 22, atunci se va rezolva numai cerinţa 22. În acest caz, fişierul de ieşire cristale.out va conţine pe fiecare dintre primele MM linii, câte NN numere naturale separate prin câte un spaţiu, reprezentând moleculele eşantionului rezultat după cristalizare.

Restricţii şi precizări

  • 4M,N8004 \leq M, N \leq 800 şi tipul fiecărei molecule este exprimat printr-un număr natural din intervalul [1,16][1, 16];
  • pe marginea eşantionului nu pot fi identificate formaţiuni cristalizabile;
  • există cel puţin o formaţiune cristalizabilă pe eşantionul analizat;
  • eşantionul nu conţine formaţiuni cristalizabile lipite (cu celule vecine pe una din cele patru direcţii);
  • pentru rezolvarea corectă a cerinţei 11 se acordă 30%30\% din punctaj, iar pentru rezolvarea corectă a cerinţei 22 se acordă 70%70\% din punctaj.

Exemplul 1

cristale.in

1
6 8
5 6 6 1 5 2 6 5
6 9 9 6 1 7 1 2
6 6 9 6 3 4 1 6
2 2 6 3 4 7 4 2
8 8 2 4 7 7 4 6
8 2 7 2 4 4 2 5

cristale.out

2

Explicație

Se va rezolva cerinţa 11 a problemei.
Eşantionul are 66 rânduri cu câte 88 molecule pe fiecare rând. Pe acest eşantion observăm o formaţiune cristalizabilă cu celule de tip 99, izolată de învelişul special format din celule identice, toate de tip 66 şi o formaţiune cristalizabilă cu celule de tip 77, izolată de învelişul special format din celule identice, toate de tip 44. Formaţiunea de 33 molecule de tip 88 nu este o formaţiune cristalizabilă întrucât se află pe marginea eşantionului.

Exemplul 2

cristale.in

2
6 8
5 6 6 1 5 2 6 5
6 9 9 6 1 7 1 2
6 6 9 6 3 4 1 6
2 2 6 3 4 7 4 2
8 8 2 4 7 7 4 6
8 2 7 2 4 4 2 5

cristale.out

5 6 6 1 5 2 6 5
6 6 6 6 1 7 1 2
6 6 6 6 3 4 1 6
2 2 6 3 4 4 4 2
8 8 2 4 4 4 4 6
8 2 7 2 4 4 2 5

Explicație

Se va rezolva cerinţa 22 a problemei.
După cristalizare, peste fiecare din cele două formaţiuni cristalizabile identificate se extinde învelişul din jurul lor.

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