BINPACK - Binpacking

Giới hạn
  • Thời gian: 0.8s
  • Bộ nhớ: 1536MB
  • Mã nguồn: 50000 bytes

Ghi chú: Các bài VNOI đã được chuyển qua VNOJ (Thông báo). Đề bài trên VNOI và vn.spoj.com sẽ không được cập nhật nữa. Một số đề bài không chính xác sẽ chỉ được cập nhật trên VNOJ. Bạn vẫn có thể tìm kiếm đề bài trên VNOI.

Link đọc đề trên VNOJ

Một xí nghiệp có một robot dùng để xếp các sản phẩm vào các thùng. Mọi thùng đều có dung tích như nhau. Có đúng hai thùng đang mở sẵn để robot xếp các sản phẩm vào. Mỗi thùng bất kỳ đều chứa được số sản phẩm mà tổng dung tích của chúng không vượt quá dung tích của thùng. Robot có thể thực hiện các thao tác sau:

  1. Đưa một sản phẩm hiện tại trên dãy băng vào thùng 1.
  2. Đưa một sản phẩm hiện tại trên dãy băng vào thùng 2.
  3. Đóng thùng 1 và mở một thùng mới thay thế cho thùng 1.
  4. Đóng thùng 2 và mở một thùng mới thay thế cho thùng 2.

Các thao tác 1, 2 chỉ có thể thực hiện nếu tổng dung tích của sản phẩm cho vào và các sản phẩm đã có trong thùng không vượt quá dung tích của thùng.

Yêu cầu: Cho biết dung tích mỗi thùng là L, dung tích của N sản phẩm trên dãy băng theo thứ tự xuất hiện là a 1 , a 2 ,..., a N , hãy tìm số thùng ít nhất để có thể cho N sản phẩm vào thùng.

Input

  • Dòng thứ nhất là hai số nguyên dương L và N
  • Dòng tiếp theo chứa các số mô tả các số a 1 , a 2 , …,a N (1 ≤ a i ≤ L)

Output

  • Gồm 1 số duy nhất là số thùng ít nhất cần dùng

Example

Input:

8 6
4 2 5 3 5 4

Output: 3

Subtask 1 : (5 test - 1s / 1 test)

L ≤ 10 9 và N ≤ 20

Subtask 2 : (5 test - 2s / 1 test)

1 ≤ a i ≤ 2; L = 10 0 và N ≤ 10 6

Subtask 3 : (5 test - 3s / 1 test)

L ≤ 30 và N ≤ 10000

Subtask 4 : (5 test - 3s / 1 test)

L ≤ 5000 và N ≤ 100

Subtask 5 : (5 test - 4s / 1 test)

L ≤ 5000 và N ≤ 10000


  • Người up: tohuuquan
  • Nguồn bài: Thầy Ðỗ Ðức Ðông