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ța
Cunoscându-se numerele naturale N
, K
și cele N
numere natural nenule, scrieți un program care:
- 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 exactK
cifre binare, parcurse de la stânga la drepta. Dacă ultima secvenţă nu are exactK
cifre binare, atunci aceasta nu se va mai lua în considerare. - 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 celorK
transformări, să se determine cea mai lungă secvență de numere care au cifra1
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 și precizări
1 ≤ N ≤ 100000
0 ≤ K ≤ 30
- Elementele șirului sunt mai mici decât
2000000001
; - Pentru 30% din teste cerinţa va fi
C=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)
; 8
(10)
=1000
(2)
; 2
(10)
=10
; 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)
;
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:
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 |
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 din stânga.