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.0001 ≤ S ≤ 50.0001 ≤ A[i] ≤ 5.000- Fie
xşiydouă 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şiyse înțelege numărulzcu 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 = 9au 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
ORminimă, 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.