asciimat

Time limit: 0.1s Memory limit: 2MB Input: asciimat.in Output: asciimat.outPoints by default: 10p

Se dă un şir de caractere SS format din litere mari şi mici ale alfabetului englez, spaţii şi caracterul ce are codul ASCII 127127. Fiecare caracter al lui SS se codifică printr-o succesiune de 11 şi 00 ce reprezintă codul ASCII al caracterului în baza 22. Codul începe cu cifra 11, astfel pentru caracterul A codificarea este 10000011000001. Un cuvânt poate fi format din litere şi caracterul . Se consideră matricea MM formată din cuvintele șirului SS codificate şi memorate pe câte o linie în ordinea în care se găsesc acestea în propoziție.

Cerinţă

Scrieţi un program care, cunoscând SS şi KK, rezolvă următoarele două cerinţe:

  1. determină LL, latura celui mai mare pătrat din matricea MM ce conține doar valori de 11;
  2. determină NRNR, câte pătrate de latura KK cu toate elementele egale cu 11 există în matricea MM.

Date de intrare

Fişierul de intrare asciimat.in conţine pe prima linie cerinţa care trebuie să fie rezolvată (11 sau 22). Pe a doua linie se află șirul SS, iar pe a treia linie se află valoarea KK, având semnificaţia din enunţ.

Date de ieşire

Dacă cerinţa este 11, fişierul de ieşire asciimat.out va conţine o singură linie pe care va fi scris LL, latura celui mai mare pătrat din matricea MM ce conține doar valori de 11.
Dacă cerinţa este 22, fişierul de ieşire asciimat.out va conţine o singură linie pe care va fi scris NRNR, câte pătrate de latura KK cu toate elementele egale cu 11 există în matricea MM.

Restricții și precizări

  • şirul SS are cel mult 30003000 de caractere
  • 3K503 \leq K \leq 50
  • lungimea unui cuvânt nu depăşeşte 100100 de caractere
  • fiecare cuvânt este codificat pe o singură linie
  • fiecare literă este codificată pe 77 biţi
  • liniile conţin concatenarea codurilor ASCII ale literelor unui cuvânt, astfel restul valorilor rămase libere din cadrul unei linii vor avea valoarea 00.
  • numărul de cuvinte din şir nu depăşeşte valoarea 300300
  • Pentru teste valorând 4040 de puncte cerinţa este 11
  • Pentru teste valorând 5050 de puncte cerinţa este 22.
  • 1010 puncte se acordă din oficiu.

Exemplul 1

asciimat.in

1
Ana are mere
3

asciimat.out

3

Exemplul 2

asciimat.in

2
Ana are mere
2

asciimat.out

7

Explicație

Matricea obţinută este:

1000001110111011000010000000
1100001111001011001010000000
1101101110010111100101100101

La poziția (1,8)(1,8) în matrice este colţul stânga-sus al unui pătrat de latura 33 cu toate elementele egale cu 11.
Există 77 pătrate de latura 22 cu toate elementele egale cu 11.

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