Sang đò

Xem PDF

Nộp bài


Điểm: 20
Thời gian: 0.5s
Bộ nhớ: 256M

Tác giả:
Dạng bài

Nhân dịp lễ Quốc Khánh \(2/9\), thầy Như tổ chức một chuyến dã ngoại cho lớp ITK20. Vì để rèn luyện sức khỏe cho học sinh, cũng như muốn tận hưởng cảnh quan thiên nhiên khu rừng, thầy Như quyết định cho cả lớp đi bộ đến địa điểm cắm trại. Sau khi băng qua một cánh rừng dài, cuối cùng cả nhóm chỉ còn cách điểm đến chưa đầy \(1\) cây số. Nhưng giờ đây các bạn cần vượt qua một con sông lớn. Trên sông có một bác lái đò lâu năm là cư dân địa phương ở đây. Vì chiếc đò khá nhỏ không thể chở hết tất cả mọi người trên cùng một chuyến, nên phải phân thành nhiều nhóm nhỏ để qua sông. Chi phí qua sông tỷ lệ thuận với số lượt đưa đò nên thầy Như muốn phân chia các nhóm sao cho chi phí là thấp nhất có thể.

Biết rằng cả nhóm dã ngoại (kể cả thầy Như) có tổng cộng \(n\) người, được đánh số từ \(1\) đến \(n\). Cân nặng của người thứ \(i\) được ký hiệu là \(w_i\) và sức chịu tải tối đa của con đò là \(M\) (sau khi đã trừ đi cân nặng bác lái đò). Đều là những học sinh giỏi thuật toán nhưng vì sau một buổi di chuyển đường dài, các bạn ITK20 đều đã thấm mệt và không thể nghĩ ra được cách phân nhóm tối ưu. Hãy giúp các bạn ấy nhé!

Input

  • Dòng đầu gồm \(2\) số nguyên dương \(n,\ M\) lần lượt là số thành viên nhóm dã ngoại và sức chịu tải tối đa của con đò;
  • Dòng thứ hai gồm \(n\) số nguyên dương \(w_1,\ w_2,\ldots,\ w_n\) tương ứng với cân nặng của từng người.

Output

  • Gồm một số nguyên dương duy nhất là số lượt đưa đò tối thiểu để đưa cả nhóm ITK20 và thầy Như sang sông.

Ví dụ

Sample input
5 7
3 4 5 2 6
Sample output
3

Ràng buộc

  • \(1\leq n\leq20\);
  • \(1\leq w_i\leq M\leq10^9\);