mirror

Time limit: 0.25s Memory limit: 32MB Input: mirror.in Output: mirror.out

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

Cerință

Cunoscându-se numerele naturale NN, KK și cele NN numere naturale 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 1010 corespunzătoare secvenţelor alăturate de exact KK cifre binare, parcurse de la stânga la drepta. Dacă ultima secvenţă nu are exact KK cifre binare, atunci aceasta nu se va mai lua în considerare.
  2. Să aplice KK 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 KK transformări, să se determine cea mai lungă secvență de numere care au cifra 11 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 CC, reprezentând cerința. Pe al doilea rând se află scrise numerele naturale NN și KK. Pe rândul al treilea sunt cele NN numere ale șirului separate prin câte un spațiu.

Date de ieșire

Dacă C=1C=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=2C=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 11).

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000;
  • 0K300 \leq K \leq 30;
  • Elementele șirului sunt mai mici decât 2 000 000 0012 \ 000 \ 000 \ 001;
  • Pentru 3030% din teste cerinţa va fi C=1C=1.

Exemplul 1

mirror.in

1
4 2
7 8 2 11

mirror.out

3 3 0 1 1 1

Explicație

7(10)=111(2)7_{(10)}=111_{(2)}; 8(10)=1000(2)8_{(10)}=1000_{(2)}; 2(10)=10(2)2_{(10)}=10_{(2)}; 11(10)=1011(2)11_{(10)}=1011_{(2)}; Șirul format este: 1111000101011\textbf{\underline{11}}11\textbf{\underline{00}}01\textbf{\underline{01}}01\textbf{\underline{1}} și grupate câte 22 avem numerele: 11(2)=3(10)11_{(2)}=3_{(10)}; 11(2)=3(10)11_{(2)}=3_{(10)}; 00(2)=0(10)00_{(2)}=0_{(10)}; 01(2)=1(10)01_{(2)}=1_{(10)}; 01(2)=1(10)01_{(2)}=1_{(10)}; 01(2)=1(10)01_{(2)}=1_{(10)}.

Exemplul 2

mirror.in

2
5 1
37 72 101 50
116

mirror.out

3
1 3

Explicație

După o transformare numerele în baza 2 sunt:

Cea mai lungă secvență este de lungime 33, fiind formată din numerele 3737, 7272, 101101 care începe pe poziția 1414 și se termină pe poziția 33. Mai există încă o astfel de secvenţa (101,50,116)(101, 50, 116) dar se alege cea mai din stânga.

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