alipiri

Time limit: 1s Memory limit: 4MB Input: alipiri.in Output: alipiri.out

Spunem că numărul natural nenul n1n_1 se poate alipi pe KK biţi cu numărul natural nenul n2n_2 dacă reprezentările lor binare au fiecare cel puţin KK biţi (primul bit fiind 11), iar ultimii KK biţi ai numărului n1n_1 coincid cu primii KK biţi ai numărului n2n_2. După alipire rezultă un alt număr, format din concatenarea lui n1n_1 cu n2n_2, dar în care secvenţa comună de KK biţi apare o singură dată şi în ea fiecare bit este înlocuit cu complementarul său (00 devine 11 şi invers).

Exemplu: Numărul 7878 = 100111021001110_2 se poate alipi pe 33 biţi cu 2525 = 11001211001_2 şi rezultă numărul 1001001012=293100100101_2 = 293.

Numerele nr1nr_1, nr2nr_2, \dots, nrMnr_M formează o listă de alipiri pe KK biţi, de lungimea M1M \geq 1, cu finalul PP, dacă nr1nr_1 se alipeşte pe KK biţi cu nr2nr_2, rezultatul se alipeşte pe KK biţi cu nr3nr_3, \dots, rezultatul se alipeşte pe KK biţi cu nrMnr_M, iar rezultatul final este numărul PP. Notă: Dacă M=1M = 1, atunci trebuie să avem nr1nr_1 = PP.

Cerinţă

Pentru un şir dat de numere naturale nenule şi valorile naturale nenule KK şi PP, se cere:

a)a) să se determine lungimea maximă a unei liste de alipiri pe KK biţi, formată cu elemente din şirul dat, nu neaparat în ordinea din acest şir;
b)b) să se verifice dacă se poate obţine, cu numere din şirul dat, o listă de alipiri pe KK biţi cu finalul PP; în caz afirmativ să se precizeze o listă de lungime minimă de alipiri pe KK biţi cu finalul PP.

Date de intrare

Fişier de intrare: alipiri.in

  • Linia 11: N K PN \ K \ P - trei numere naturale nenule, separate prin câte un spaţiu, reprezentând numărul NN al numerelor date, lungimea KK a secvenţelor comune din alipiri, respectiv valoarea PP a numărului care trebuie obţinut prin alipiri;
  • Linia 22: nr1 nr2  nrNnr_1 \ nr_2 \ \dots \ nr_N - NN 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 11: MM - număr natural nenul, reprezentând rezultatul de la cerinţa a)a);
  • Linia 22: mesaj - dacă cerinţa b)b) poate fi satisfăcută, pe această linie se va scrie DA, în caz contrar se va scrie NU;
  • Linia 33: nr1 nr2 nr_1 \ nr_2 \ \dots - dacă pe linia a)a) aţi scris 'DA', pe această linie se va scrie o listă de alipiri (pe KK biţi) de lungime minimă cu finalul PP; numerele din listă se vor separa prin câte un spaţiu.

Restricții și precizări

  • 1K81 \leq K \leq 8;
  • 1N91 \leq N \leq 9;
  • 1P21091 \leq P \leq 2 \cdot 10^9;
  • dacă cerinţa b)b) 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: a) 40%; b) 60%a) \ 40\%; \ b) \ 60\%

Exemplu

alipiri.in

4 3 291    	    
14 59 36 31

alipiri.out

4
DA
59 31 14

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