Cerința
Se dau un șir A[1..N]
și un număr S
. Dintre toate subșirurile de suma S
, să se determine un subșir pentru care suma OR
, pe biți, este minimă.
Date de intrare
Fișierul de intrare sormin.in
conține pe primul rând numerele N
și S
. Pe a doua linie sunt scrise N
numere naturale separate prin câte un spațiu.
Date de ieșire
În fișierul de ieșire sormin.out
se vor scrie pe prima linie numerele R
şi M
, reprezentând suma OR
, pe biți minimă, respectiv numărul de elemente ale subșirului determinat. Pe a doua linie vor fi scrise, separate prin câte un spațiu cele M
elemente ale subșirului determinat.
Restricții și precizări
1 ≤ N ≤ 100.000
1 ≤ S ≤ 50.000
1 ≤ A[i] ≤ 5.000
- Fie
x
şiy
două numere naturale. Pentru fiecare din ele avem câte o reprezentare în baza2
,x[k],x[k-1],…,x [1],x [0]
şi respectivy[k],y[k-1],…,y [1],y [0]
. În cazul în care lungimile reprezentărilor sunt diferite, cea mai scurtă dintre ele se poate prelungi spre stânga cu zerouri. Prin sumaOR
, pe biți, a numerelorx
şiy
se înțelege numărulz
cu reprezentareaz[k],z[k-1],…,z [1],z [0]
undez[j] = x[j] | y[j]
, este operația definită prin0 | 0 = 0, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 1, 0 ≤ k
. De exemplux = 12
şiy = 9
au reprezentările binare1100
şi1001
, iarx | y = 1101 = 13
- Pentru testele date se garantează existența unei soluții
- Dacă există mai multe subșiruri cu suma
OR
minimă, atunci oricare din ele va fi considerat corect
Exemplu:
sormin.in
13 20 2 2 2 2 2 3 3 3 3 5 5 5 5
sormin.out
3 8 2 2 2 2 3 3 3 3
Explicație
Nu putem obține suma 20
doar cu elemente egale cu 2
. Putem obține suma 20
folosind elementele egale cu 2
şi 3
. Suma OR
este 3
, deoarece 2
are reprezentarea binara 10
, iar 3
are reprezentarea binară 11
, deci 2 | 3 = 3
.