Xây nhà trên đồi
Đề bài
Mô tả
Thành phố có một dãy ngọn đồi xếp thành hàng ngang, ngọn đồi thứ có độ cao .
Người ta muốn xây nhà trên các ngọn đồi. Vì lý do thẩm mỹ, một ngôi nhà chỉ được xây trên ngọn đồi cao hơn hẳn (lớn hơn thực sự) mọi ngọn đồi kề nó. Đồi thứ chỉ có một đồi kề là đồi thứ , đồi thứ chỉ có một đồi kề là đồi thứ ; các đồi còn lại có hai đồi kề. Ví dụ với dãy độ cao thì chỉ có thể xây nhà trên hai ngọn đồi có độ cao và .
Thành phố có một chiếc máy xúc. Trong một giờ, máy xúc làm giảm độ cao của đúng một ngọn đồi đi đơn vị. Máy chỉ làm việc trên một ngọn đồi tại một thời điểm. Độ cao được phép giảm xuống hoặc xuống giá trị âm. Không có cách nào làm tăng độ cao của một ngọn đồi.
Chính quyền muốn xây ngôi nhà, tức là sau khi san đồi phải có ít nhất ngọn đồi thoả điều kiện ở trên. Vì giá trị chưa được chốt, hãy tính đáp án cho mọi từ đến : với mỗi , cho biết số giờ ít nhất cần dùng máy xúc.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số ngọn đồi.
- Dòng thứ hai chứa số nguyên là độ cao các ngọn đồi.
Dữ liệu ra
In ra đúng số nguyên cách nhau bởi dấu cách. Số thứ là số giờ ít nhất cần thiết để có thể xây được ngôi nhà.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 1 1 1 1 |
1 2 2 | Với : giảm đồi đi , dãy thành , đồi trở thành đỉnh. Với và : giảm đồi và đồi , dãy thành , khi đó cả ba đồi đều là đỉnh nên cùng một chi phí giờ đáp ứng được cả lẫn . |
| 3 1 2 3 |
0 2 | Với : đồi đã cao hơn đồi nên không tốn giờ nào. Với : hai đỉnh không thể kề nhau nên phải chọn đồi và đồi , cần hạ đồi từ xuống , mất giờ. |
| 5 1 2 3 2 2 |
0 1 3 | : đồi sẵn là đỉnh. : chọn đồi và đồi , hạ đồi từ xuống , mất giờ. : chọn đồi , cần hạ đồi xuống (mất giờ) và đồi xuống (mất giờ), tổng giờ. |
Bình luận