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ă );
- 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 numărul de obiecte, greutăţile obiectelor precum şi capacitatea a unui container.
Date de intrare
Fişierul de intrare banda.in
conţine – numărul de obiecte şi capacitatea unui container, – greutăţile celor obiecte.
Date de ieșire
Fişierul de ieşire banda.out
conţine pe prima linie – numărul minim de containere necesare transportului.
Restricții și precizări
Exemplul 1
banda.in
6 8
4 2 5 3 5 4
banda.out
3