Fişierul intrare/ieşire:mirror.in, mirror.outSursăONI 2017, clasa a 9-a
AutorMirela MlisanAdăugată deBLz0rDospra Cristian BLz0r
Timp execuţie pe test0.4 secLimită de memorie36864 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Mirror

Numim „oglinda” numărului natural nenul a, numărul b, obţinut prin modificarea fiecărei cifre din reprezentarea sa binară,
de exemplu pentru a=22(10) =10110(2) se obţine 01001(2) = 9(10) = b.

Cerinţe:

Cunoscându-se numerele naturale N, K şi cele N numere natural nenule, scrieţi un program care:

1) Transformă în baza doi termenii şirului dat obţinându-se un nou şir format din alipirea cifrelor binare. Din acest şir se vor determina şi afişa, separate prin câte un spaţiu, toate reprezentările în baza 10 corespunzătoare secvenţelor alăturate de exact K cifre binare, parcurse de la stânga la drepta. Dacă ultima secvenţă nu are exact K cifre binare, atunci aceasta nu se va mai lua în considerare.
2) Să aplice K transformări asupra şirului iniţial, înlocuind la fiecare pas orice termen cu „oglinda” sa. Asupra termenilor care devin zero nu se vor mai efectua alte operaţii. După efectuarea celor K transformări, să se determine cea mai lungă secvenţă de numere care au cifra 1 pe aceeaşi poziţie în reprezentarea lor în baza doi. Dacă sunt mai multe astfel de secvenţe având lungimea maximă, se va afişa cea mai din stânga.

Date de intrare

Fişierul de intrare mirror.in conţine pe primul rând numărul C, reprezentând cerinţa. Pe al doilea rând se află scrise numerele naturale N şi K. Pe rândul al treilea sunt cele N numere ale şirului separate prin câte un spaţiu.

Date de ieşire

Dacă C=1, atunci în fişierul de ieşire mirror.out se vor scrie separate prin câte un spaţiu, toate numerele cerute în enunţ.
Dacă C=2, atunci în fişierul de ieşire mirror.out se va scrie pe prima linie lungimea maximă a secvenţei determinate, iar pe următoarea linie separate prin spaţiu, poziţia primului şi ultimului termen din secvenţă (prima poziţie este 1).

Restricţii

  • 1 ≤ N ≤ 100000
  • 0 ≤ K ≤ 30
  • Elementele şirului sunt mai mici decât 2000000001
  • Pentru 30% din teste cerinţa va fi C=1.

Exemplu

mirror.inmirror.outExplicaţie
1
4 2
7 8 2 11
3 3 0 1 1
1
7(10)=111(2); 8(10)=1000(2); 2(10)=10(2); 11(10)=1011(2);
Sirul format este: 1111000101011 şi grupate câte 2 avem numerele:
11(2)=3(10); 11(2)=3(10); 00(2)=0(10); 01(2)=1(10); 01(2)=1(10); 01(2)=1(10);
2
5 1
37 72 101 50
116
3
1 3
După o transformare numerele în baza 2 sunt:
0 0 1 1 0 1 0 <-37
0 1 1 0 1 1 1 <-72
0 0 1 1 0 1 0 <-101
0 0 0 1 1 0 1 <-50
0 0 0 1 0 0 0 <-116
Cea mai lungă secvenţă este de lungime 3, fiind formată din numerele
37, 72, 101 care începe pe poziţia 1 şi se termină pe poziţia 3. Mai
există încă o astfel de secvenţa (101, 50, 116) dar se alege cea mai
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?