.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » cifru1

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
cifru1


Timp maxim de execuţie / test:
0.2s
Memorie totala disponibilă / stivă:
16MB / 1MB

Copiii solarieni se joacă adesea trimiţându-şi mesaje codificate. Pentru codificare ei folosesc un cifru bazat pe o permutare p a literelor alfabetului solarian şi un număr natural d.
Alfabetul solarian conţine m litere foarte complicate, aşa că noi le vom reprezenta prin numere de la 1 la m.
Dat fiind un mesaj în limbaj solarian, reprezentat de noi ca o succesiune de n numere cuprinse între 1 şi m, c1 c2 … cn, codificarea mesajului se realizează astfel: se înlocuieşte fiecare literă ci cu p( ci ), apoi şirul obţinut p( c1 ) p( c2 ) … p( cn ) se roteşte spre dreapta, făcând o permutare circulară cu d poziţii rezultând şirul p( cn-d+1 ) … p( cn-1 ) p( cn ) p( c1 ) p( c2 )… p( cn-d ).
De exemplu, pentru mesajul 2 1 3 3 2 1, permutarea p=(3 1 2) (adică p(1)=3, p(2)=1, p(3)=2) şi d=2). Aplicând permutarea p vom obţine şirul 1 3 2 2 1 3, apoi rotind spre dreapta şirul cu două poziţii obţinem codificarea 1 3 1 3 2 2.

Cerinţă

Date fiind un mesaj necodificat şi codificarea sa, determinaţi cifrul folosit (permutarea p şi numărul d).

Date de intrare

Fişierul de intrare cifru1.in conţine pe prima linie numele naturale n şi m, separate prin spaţiu, reprezentând lungimea mesajului şi respectiv numărul de litere din alfabetul solarian. Pe cea de a doua linie este scris mesajul necodificat ca o succesiune de n numere cuprinse între 1 şi m separate prin câte un spaţiu. Pe cea de a treia linie este scris mesajul codificat ca o succesiune de n numere cuprinse între 1 şi m separate prin câte un spaţiu.

Date de ieşire

Fişierul de ieşire cifru1.out va conţine pe prima linie numărul natural d, reprezentând numărul de poziţii cu care s-a realizat permutarea circulară spre dreapta. Dacă pentru d există mai multe posibilităţi se va alege valoarea minimă. Pe următoarea linie este descrisă permutarea p. Mai exact se vor scrie valorile p(1), p(2), …, p(m) separate prin câte un spaţiu.

Restricţii

n ≤ 100 000
m ≤ 9999

Mesajul conţine fiecare număr natural din intervalul [1, m] cel puţin o dată.
Pentru teste cu m ≤ 5 se acordă 40 de puncte din care 20 pentru teste şi cu n ≤ 2000.

Exemple

cifru1.incifru1.out
6 3 2 1 3 3 2 1 1 3 1 3 2 2 2 3 1 2

autor: Prof. Nistor-Eugen Moţ
propunător: Prof. Emanuela Cerchez
Liceul de Informatica ″Grigore Moisil″
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la ONI 2006: borg, diamant, matrice1, petrom, ratina, vitale, acolor, evo, part, trasee, bombo, cub2, prieteni2, sg1, fact, limbaj, panouri, pereti, sant1, zumzi, adun, sport1, baschet1, mere3, roboti, tzigla, morse, powerpuff
De acelaşi autor: cursa, insule, termen, div, mese, hperm, zmeu, chimie2, mere2, vile, dans, multiplu, paralel, divizor, ghici, barca1, fibo, parc, circular, sant, mobile, pattern, mutare, concurs2, soricel1, soricel2, vizibil, bloc, soricel3, sah1, gramada, gramezi1, aranjari, numere5, lacusta, sir6, puncte3, peri, atelier, radical, pion, el, tort1, triunghi4, bile6, zmax
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, index, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, limbaj, adun, ecuatii, dir, paritate, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, clase, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Despre KMP: sablon, pstring, tetris2, arbnr, circular, seti
Chestionare recomandate
surse trimise | ajutor