Xây chuồng cao tầng
Bác nông dân John đang xây một chuồng bò gồm tầng, với sự giúp đỡ của con bò. Mỗi con bò phải được phân công vào đúng một tầng, và mỗi tầng phải có ít nhất một con bò.
Tầng thứ cần đơn vị công việc để hoàn thành. Nếu có con bò được phân công vào tầng , thời gian để hoàn thành tầng đó là giờ.
Các tầng phải được xây tuần tự (tầng phải xong trước khi bắt đầu tầng ), nên tổng thời gian là tổng thời gian hoàn thành từng tầng.
Hãy xác định tổng thời gian tối thiểu để xây xong chuồng bò, với cách phân bổ bò tối ưu.
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên và .
- dòng tiếp theo, dòng thứ chứa giá trị .
Dữ liệu ra
In ra tổng thời gian tối thiểu, làm tròn đến số nguyên gần nhất.
Dữ liệu đầu vào được đảm bảo rằng đáp án cách giá trị nguyên gần nhất hơn .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 5 10 4 |
5 | Phân bổ 4 bò cho tầng 1 và 1 bò cho tầng 2. Thời gian = . Tuy nhiên phân bổ 3 bò tầng 1, 2 bò tầng 2 cho thời gian . Phân bổ tối ưu cho kết quả làm tròn là . |
| 4 7 2 10 5 1 |
9 | Có 4 tầng và 7 con bò, mỗi tầng cần ít nhất 1 bò. Phân bổ tối ưu 3 bò còn dư cho các tầng có khối lượng công việc lớn nhất. |
Ghi chú
Lưu ý rằng có thể rất lớn (đến ), nên thuật toán tham lam thông thường (thêm từng bò một) sẽ không đủ nhanh.
Bình luận