Spunem că numărul natural nenul se poate alipi pe biţi cu numărul natural nenul dacă reprezentările lor binare au fiecare cel puţin biţi (primul bit fiind ), iar ultimii biţi ai numărului coincid cu primii biţi ai numărului . După alipire rezultă un alt număr, format din concatenarea lui cu , dar în care secvenţa comună de biţi apare o singură dată şi în ea fiecare bit este înlocuit cu complementarul său ( devine şi invers).
Exemplu: Numărul = se poate alipi pe biţi cu = şi rezultă numărul .
Numerele , , , formează o listă de alipiri pe biţi, de lungimea , cu finalul , dacă se alipeşte pe biţi cu , rezultatul se alipeşte pe biţi cu , , rezultatul se alipeşte pe biţi cu , iar rezultatul final este numărul . Notă: Dacă , atunci trebuie să avem = .
Cerinţă
Pentru un şir dat de numere naturale nenule şi valorile naturale nenule şi , se cere:
să se determine lungimea maximă a unei liste de alipiri pe biţi, formată cu elemente din şirul dat, nu neaparat în ordinea din acest şir;
să se verifice dacă se poate obţine, cu numere din şirul dat, o listă de alipiri pe biţi cu finalul ; în caz afirmativ să se precizeze o listă de lungime minimă de alipiri pe biţi cu finalul .
Date de intrare
Fişier de intrare: alipiri.in
- Linia : - trei numere naturale nenule, separate prin câte un spaţiu, reprezentând numărul al numerelor date, lungimea a secvenţelor comune din alipiri, respectiv valoarea a numărului care trebuie obţinut prin alipiri;
- Linia : - numere naturale nenule, separate prin câte un spaţiu, reprezentând şirul dat.
Date de ieșire
Fişier de ieşire: alipiri.out
- Linia : - număr natural nenul, reprezentând rezultatul de la cerinţa ;
- Linia : mesaj - dacă cerinţa poate fi satisfăcută, pe această linie se va scrie
DA
, în caz contrar se va scrieNU
; - Linia : - dacă pe linia aţi scris 'DA', pe această linie se va scrie o listă de alipiri (pe biţi) de lungime minimă cu finalul ; numerele din listă se vor separa prin câte un spaţiu.
Restricții și precizări
- ;
- ;
- ;
- dacă cerinţa este satisfăcută de mai multe liste (de lungime minimă), în fişier se va scrie una singură.
- pentru ambele cerinţe fiecare număr din şirul de intrare poate apărea cel mult o dată în listele de alipiri considerate.
- Notă. Se acordă punctaje parţiale:
Exemplu
alipiri.in
4 3 291
14 59 36 31
alipiri.out
4
DA
59 31 14