mesaj

Time limit: 0.05s Memory limit: 2MB Input: mesaj.in Output: mesaj.out

Maria şi Ionuţ doresc să comunice între ei prin bileţele. Pentru ca mesajele lor să nu fie înţelese şi de ceilalţi colegi, ei se hotărăsc să le codifice. Pentru a codifica un mesaj, Maria şi Ionuţ procedează astfel:

  • aleg împreună un cuvânt ss numit cheie format din pp litere diferite două câte două
  • împart mesajul pe care doresc să-l transmită între ei în secvenţe de caractere alăturate de lungime pp, cu excepţia ultimei secvenţe care poate avea mai puţin de pp caractere
  • scriu pe foaie cuvântul cheie ales
  • sub cuvântul cheie ales se scriu secvenţele de lungime pp determinate anterior, în ordinea obţinerii lor
  • mesajul codificat se obţine astfel:
    • se parcurge tabelul obţinut anterior, pe coloane, de sus în jos
    • ordinea de parcurgere a coloanelor este ordinea alfabetică a literelor din cuvântul cheie

Cerinţă

Scrieţi un program care să determine litera din mesajul codificat care apare de cele mai puţine ori, iar dacă sunt mai multe astfel de litere, prima dintre acestea în ordine alfabetică şi să realizeze decodificarea unui mesaj codificat în modul prezentat anterior.

Date de intrare

Fişierul de intrare mesaj.in conţine:

  • pe prima linie numărul pp de caractere din cheie
  • pe a doua linie cuvântul cheie ales de Maria şi Ionuţ
  • pe a treia linie numărul nn de caractere din mesajul codificat
  • pe a patra linie mesajul codificat

Date de ieşire

Fişierul de ieşire mesaj.out va conţine:

  • pe prima linie litera din mesajul codificat care apare de cele mai puţine ori în mesajul codificat; dacă sunt mai multe astfel de litere, prima dintre acestea în ordine alfabetică
  • pe a doua linie mesajul decodificat

Restricţii şi precizări

  • Cuvântul cheie conţine numai litere mari ale alfabetului englez (A, B, C, ..., Z) şi are maxim 2626 de litere
  • Mesajul codificat conţine litere mari ale alfabetului englez, cuvintele sunt separate prin unul sau mai multe spaţii
  • 1p261 \leq p \leq 26
  • pn2 000p \leq n \leq 2 \ 000
  • Se acordă punctaje parţiale:
    • 20%20\% pentru afişarea valorii corecte pe prima linie a fişierului mesaj.out (cerinţa aa)
    • 80%80\% pentru afişarea corectă a mesajului pe linia a doua a fişierului mesaj.out (cerinţa bb)

Exemplu

mesaj.in

8
COMPUTER
44
SAAO T PTDMCOAANCU DNIICL LFALIIEASMA REINAO

mesaj.out

F
SUCCES LA OLIMPIADA NATIONALA DE INFORMATICA

Explicaţie

Maria şi Ionuţ aleg cuvântul cheie COMPUTER\text{COMPUTER}
Mesajul pe care doresc să-l codifice este SUCCES LA OLIMPIADA NATIONALA DE INFORMATICA\text{SUCCES LA OLIMPIADA NATIONALA DE INFORMATICA}
Tabelul obţinut este următorul:

Litera cerută este F şi mesajul codificat este SAAO T PTDMCOAANCU DNIICL LFALIIEASMA REINAO\text{SAAO T PTDMCOAANCU DNIICL LFALIIEASMA REINAO}

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