Binpacking


Submit solution

Points: 1.38 (partial)
Time limit: 1.2s
Memory limit: 512M

Problem source:
Thầy Ðỗ Ðức Ðông
Problem type

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 \leq a_{i} \leq L)~

Output

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

Giới hạn

  • Subtask ~1~: ~(5~ test) ~L \leq 10^{9}~ và ~N \leq 20~
  • Subtask ~2~: ~(5~ test) ~1 \leq a_{i} \leq 2~; ~L = 10~ ~0~ và ~N \leq 10^{6}~
  • Subtask ~3~: ~(5~ test) ~L \leq 30~ và ~N \leq 10000~
  • Subtask ~4~: ~(5~ test) ~L \leq 5000~ và ~N \leq 100~
  • Subtask ~5~: ~(5~ test) ~L \leq 5000~ và ~N \leq 10000~

Sample Input

8 6
4 2 5 3 5 4

Sample Output

3

Comments

There are no comments at the moment.