Mở rộng lòng đường
Đề bài
Mô tả
Một con đường được chia thành đoạn bằng nhau, đánh số từ trái sang phải. Đoạn thứ có bề rộng phần lòng đường là và bề rộng phần bãi cỏ là .
Với mỗi đoạn , ta có thể phá bỏ một phần bãi cỏ với độ rộng nguyên (). Sau đó, bề rộng lòng đường mới của đoạn trở thành và bề rộng bãi cỏ còn lại là .
Ta muốn phá bỏ càng nhiều bãi cỏ càng tốt, đồng thời tránh việc lòng đường thay đổi bề rộng quá đột ngột giữa các đoạn liền kề. Cụ thể, với mọi () phải thỏa mãn . Lưu ý điều kiện này có thể chưa đúng với cấu hình ban đầu.
Hãy tìm tổng độ rộng bãi cỏ lớn nhất có thể phá bỏ (tức là tối đa ), và đưa ra một cấu hình bề rộng lòng đường mới đạt được tổng đó. Nếu không tồn tại cấu hình hợp lệ nào, in ra .
Dữ liệu vào
- Dòng đầu chứa số nguyên là số đoạn của con đường.
- dòng tiếp theo, dòng thứ chứa hai số nguyên và là bề rộng lòng đường và bề rộng bãi cỏ hiện tại của đoạn .
Dữ liệu ra
- Nếu không có cấu hình hợp lệ, in ra một số .
- Ngược lại, dòng đầu in tổng độ rộng bãi cỏ lớn nhất bị phá bỏ. Dòng thứ hai in số nguyên () là bề rộng lòng đường mới của các đoạn.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 4 5 4 5 4 10 |
16 9 9 10 |
Mở rộng lòng đường thành 9, 9, 10. Các đoạn liền kề chênh nhau tối đa 1. Tổng phá bỏ là . |
| 4 1 100 100 1 1 100 100 1 |
202 101 101 101 101 |
Mọi đoạn đều đưa về 101, thỏa điều kiện chênh lệch. Tổng phá bỏ là . |
| 3 1 1 100 100 1 1 |
-1 | Đoạn giữa có nên , nhưng hai đoạn bên chỉ đạt tối đa bề rộng 2, không thể chênh nhau với đoạn giữa. |
Bình luận