familie

Time limit: 0.02s Memory limit: 2MB Input: familie.in Output: familie.out

Un grup de geologi a descoperit nn fosile, notate prin numerele 1,2,,n1, 2, \dots, n şi a estimat vârsta geologică a fiecărei fosile printr-un număr natural, obţinând astfel un şir de nn numere naturale, notate v1,v2,,vnv_1, v_2, \dots, v_n, unde v1v_1 este vârsta primei fosile descoperite, v2v_2 este vârsta celei de-a doua fosile descoperite etc. A urmat clasificarea fosilelor în kk-familii, în funcţie de vârstă. O kk-familie este formată din vârstele fosilelor pentru care reprezentările în baza 22 conţin exact kk zerouri, fosilele fiind selectate în ordinea descoperirii lor.
Din fosilele unei kk-familii se formează ramuri ale kk-familiei, astfel încât fiecare fosilă aparţine unei singure ramuri. O ramură a unei kk-familii oarecare, notată a1,a2,,ana_1, a_2, \dots, a_n, reprezintă un subşir strict crescător al său, de forma aj1,aj2,,ajpa_{j1}, a_{j2}, \dots, a_{jp}, unde 1j1<j2<<jpn1 \leq j_1 < j_2 < \dots < j_p \leq n şi aj1<aj2<<ajpa_{j1} < a_{j2} < \dots < a_{jp}, ji+1ji1j_{i+1} - j_i \geq 1, 1i<n\forall 1 \leq i < n. Geologii trebuie să determine kk-familia obţinută din şirul vârstelor fosilelor, pentru o anumită valoare kk şi să stabilească ramurile kk-familiei, utilizând toate fosilele ei.

Cerinţă

Realizaţi un program care afişează kk-familia obţinută din şirul vârstelor fosilelor şi numărul cel mai mic de ramuri ce se pot obţine, utilizând toate fosilele kk-familiei afişate.

Date de intrare

Fişierul de intrare familie.in conţine pe prima linie două numere naturale nn şi kk, ce reprezintă numărul de fosile descoperite şi respectiv numărul de zerouri utilizat pentru kk-familia determinată şi pe a doua linie conţine nn numere naturale v1,v2,,vnv_1, v_2, \dots, v_n, separate prin câte un spaţiu, ce reprezintă şirul vârstelor celor nn fosile.

Date de ieşire

Fişierul de ieşire familie.out va conţine pe prima linie un şir de numere naturale, separate între ele printr-un spaţiu, ce reprezintă vârstele fosilelor din kk-familia obţinută şi pe a doua linie un număr natural ce reprezintă numărul cel mai mic de ramuri ale kk-familiei, obţinut prin utilizarea tuturor fosilelor kk-familiei.

Restricţii şi precizări

  • 0<n<3 0000 < n < 3\ 000
  • 0<k<300 < k < 30
  • 10 000<vi<2 000 000 00010\ 000 < v_i < 2\ 000\ 000\ 000,  1in\forall\ 1 \leq i \leq n
  • O ramură conţine una sau mai multe fosile

Exemplul 1

familie.in

8 9
11024 11136 12039 11072 12032 11136 11075 11040

familie.out

11024 11136 11072 12032 11136 11040
3

Explicație

K-familia conţine numerele 1102411024, 1113611136, 1107211072, 1203212032, 1113611136, 1104011040 (ce au câte 99 zerouri în reprezentarea lor în baza 22). KK-familia este formată din 33 ramuri, acestea pot fi alese astfel: prima ramură este 1102411024, 1113611136, 1203212032; a doua ramură este 1107211072, 1113611136; a treia ramură este 1104011040.

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