criptare

Time limit: 0.05s Memory limit: 64MB Input: criptare.in Output: criptare.outPoints by default: 10p

Ana și Bogdan sunt pasionați de criptarea mesajelor. Ei au studiat mai multe metode de criptare. Ultimul algoritm pe care l-au studiat presupune să scrie un cuvânt cu litere mari ale alfabetului englez. Apoi, sub acest cuvânt să scrie toate permutările sale circulare cu o poziție spre stânga obținând astfel o matrice de caractere. Ordonează lexicografic liniile matricii, memorează ultima coloană și adaugă la finalul șirului astfel obținut numărul liniei pe care a ajuns cuvântul inițial, șirul rezultat fiind denumit cript-ul șirului inițial. Analizând matricea de caractere obținută ei au observat că în matrice se obțin submatrici cu proprietatea că în cele patru colțuri ale lor se află același caracter.

Cerință

Să se scrie un program care citește un număr natural cc, reprezentând cerința care trebuie să fie rezolvată, apoi citește un cuvânt. Programul rezolvă următoarele cerințe:

  1. Dacă c=1c=1, șirul citit este un cuvânt necriptat, programul va determina și va afișa cript-ul obținut conform algoritmului descris anterior.
  2. Dacă c=2c=2, șirul citit este un cript, programul va determina și va afișa cuvântul necriptat.
  3. Dacă c=3c=3, șirul citit este un cuvânt necriptat, programul va determina matricea de caractere obținută conform algoritmului descris anterior și va afișa numărul maxim de elemente dintr-o submatrice cu proprietatea că în colțurile sale se află același caracter.

Date de intrare

Pe prima linie a fişierului de intrare criptare.in este scrisă cerința (11, 22 sau 33). Pe linia a doua a fișierului este scris un cuvânt. Dacă cerința este 11 sau 33 cuvântul este necriptat, dacă cerința este 22 cuvântul este un cript.

Date de ieșire

Dacă cerința este 11, pe prima linie a fișierului de ieșire criptare.out va fi scris criptul cuvântului citit. Dacă cerința este 22 pe prima linie va fi scris cuvântul necriptat. Dacă cerința este 33 pe prima linie va fi scris un număr natural reprezentând numărul maxim de elemente dintr-o submatice care are în colțurile sale același caracter.

Restricții și precizări

  • 33 \leq lungimea cuvântului aflat pe prima linie a fișierului 100\leq 100
  • În matricea de cuvinte, liniile şi coloanele se numerotează de la 00.
  • Dacă șirul inițial apare pe mai multe linii ale matricei, se va considera că prima apariție reprezintă șirul inițial.
  • Pentru 2020 de puncte, C=1C=1.
  • Pentru 5050 de puncte, C=2C=2.
  • Pentru 2020 de puncte, C=3C=3.

Exemplul 1

criptare.in

1
ANA

criptare.out

NAA1

Explicație

Exemplul 2

criptare.in

2
NAA1

criptare.out

ANA

Exemplul 3

criptare.in

3
MERE

criptare.out

6

Explicație

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