banda

Time limit: 0.25s Memory limit: 2MB Input: banda.in Output: banda.out

Misiunea unui robot este de a lua obiecte de pe o bandă de asamblare, în ordinea în care acestea vin pe bandă şi de a le introduce în containere identice de capacitate gmax.
La fiecare moment de timp numai două containere sunt disponibile. După ce ia un obiect de pe bandă, robotul poate alege între:

  • a plasa obiectul în unul dintre cele două containere disponibile, dacă este posibil (adică dacă nu se depăşeşte capacitatea maximă gmaxg_{max});
  • a închide unul dintre cele două containere şi a deschide unul nou, pentru a pune în el obiectul.
    Atenţie! După ce a fost închis un container, acesta este sigilat şi nu poate fi redeschis.

Cerinţă

Scrieţi un program care să determine numărul minim de containere necesar pentru a transporta obiectele de pe banda de asamblare dacă se cunoaşte nn numărul de obiecte, greutăţile obiectelor gi(i=1,,n)g_i (i = 1, \dots, n) precum şi capacitatea gmaxg_{max} a unui container.

Date de intrare

Fişierul de intrare banda.in conţine n gmaxn \ g_{max} – numărul de obiecte şi capacitatea unui container, g1 g2gng_1 \ g_2 \dots g_n – greutăţile celor nn obiecte.

Date de ieșire

Fişierul de ieşire banda.out conţine pe prima linie kk – numărul minim de containere necesare transportului.

Restricții și precizări

  • n25n \leq 25
  • 0<gmax1000 < g_{max} \leq 100
  • 0<gi1000 < g_i \leq 100

Exemplul 1

banda.in

6 8
4 2 5 3 5 4

banda.out

3

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