Cerința
Se consideră două șiruri:
A=(A[1],A[2],...,A[N])format dinNnumere naturale distincte;C=(C[1],C[2],...,C[N])format dinNcifre din mulțimea{1,2}șiC[1] = 1, denumit șir cod.
Prin reașezarea numerelor din șirul A pe baza codului C se obține un nou șir B ce conține toate numerele din A. Procedeul de reașezare folosit, denumit codificare, este următorul:
- inițial, se așează primul număr
A[1]din șirulApe prima poziție din șirulB - se parcurge șirul
Ade la al doilea element către alN-lea, iar fiecare elementA[K](2 ≤ K ≤ N) se așează:- la începutul șirului
B, dacăC[K] = 1 - la sfârșitul șirului
B, dacăC[K] = 2
- la începutul șirului
De exemplu, pentru N = 4, A = (34,9,3,56), C = (1,1,2,1) se obține șirul codificat B = (56,9,34,3).
Cerința
- Pentru
Ndat și un șirCcuNelemente, verificați dacăCpoate fi un șir cod. - Pentru
Ndat, un șirAcuNelemente și șirCun șir cod cuN, determinați șirulBobținut prin codificarea de mai sus. - Pentru
Ndat și două șiruriAșiBcu câteNelemente, determinați șirul cod prin care șirulAa fost codificat și s-a obținut șirulB.
Date de intrare
Fișierul de intrare coddecod.in conține pe prima linie, un număr natural c (1, 2 sau 3) reprezentând cerința care trebuie rezolvată:
- Dacă
c = 1, conține pe linia a doua un număr naturalN, iar pe linia a treia conțineNnumere naturale, separate prin câte un spațiu, reprezentând elementele unui șirX; - Dacă
c = 2, conține pe linia a doua numărul naturalN, pe linia a treia conțineNnumere naturale distincte, separate prin câte un spațiu, reprezentând elementele șiruluiA, iar pe linia a patra conțineNnumere naturale, separate prin câte un spațiu, reprezentând elementele șirului codC, cu semnificația din enunț; - Dacă
c = 3, conține pe linia a doua numărul naturalN, pe linia a treia conțineNnumere naturale distincte, separate prin câte un spațiu, reprezentând elementele șiruluiA, iar pe linia a patra conțineNnumere naturale distincte, separate prin câte un spațiu, reprezentând elementele șiruluiB, cu semnificația din enunț.
Date de ieșire
Fișierul de ieșire coddecod.out conține o singură linie, pe care este scris răspunsul la cerința de rezolvat:
- dacă
c = 1, răspunsulDAdacă șirulXpoate fi unșir cod; în caz contrar, conține răspunsulNU(răspunsul la cerința1); - dacă
c = 2,Nnumere naturale, separate prin câte un spațiu, reprezentând șirulBdeterminat (răspunsul la cerința2); - dacă
c = 3,Nnumere naturale, separate prin câte un spațiu, reprezentând șirul codCdeterminat (răspunsul la cerința3).
Restricții și precizări
1 ≤ N ≤ 100000 ≤ A[K], B[K], X[K] ≤ 32000pentruK = 1,2,3,...N- Pentru fiecare
AșiBdate, există un singur șir codCpentru obținerea șiruluiBprin codificarea șiruluiA
Exemplul 1:
coddecod.in
1 4 1 5 0 7
coddecod.out
NU
Explicație
Se rezolvă cerința 1. N=4. Șirul X=(1, 5, 0, 7) nu poate fi un șir cod.
Exemplul 2:
coddecod.in
1 7 1 2 1 2 1 2 2
coddecod.out
DA
Explicație
Se rezolvă cerința 1. N=7. Șirul X=(1, 2, 1, 2, 1, 2, 2) poate fi un șir cod.
Exemplul 3:
coddecod.in
2 6 37 1 56 2 989 12 1 1 2 1 2 1
coddecod.out
12 2 1 37 56 989
Explicație
Se rezolvă cerința 2. N=6, A=(37, 1, 56, 2, 989, 12), C=(1, 1, 2, 1, 2, 1). Șirul determinat este B=(12, 2, 1, 37, 56, 989)
Exemplul 4:
coddecod.in
2 5 9 5 17 3 6 3 5 9 17 6
coddecod.out
1 1 2 1 2
Explicație
Se rezolvă cerința 2. N=5, A=(9, 5, 17, 3, 6), B=(3, 5, 9, 17, 6) Șirul cod determinat este C=(1, 1, 2, 1, 2)