Ngủ Trong Lớp (Khó)
Nộp bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
3.0s
Python 3
5.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Go, Java, Kotlin, Pascal, Python, Scratch
Bessie hay ngủ gật trong lớp, và bạn thân Elsie đã ghi lại nhật ký theo dõi gồm tiết học, trong đó tiết thứ Bessie ngủ gật lần.
Elsie muốn chỉnh sửa nhật ký theo hai loại thao tác:
- Gộp: Chọn hai tiết liền kề, gộp thành một tiết duy nhất có số lần ngủ gật bằng tổng hai tiết cũ (số tiết giảm đi 1).
- Tách: Chọn một tiết có giá trị , tách thành hai tiết liền kề với giá trị lần lượt là và (với , số tiết tăng lên 1).
Cho truy vấn. Với mỗi truy vấn có giá trị , hãy tìm số thao tác tối thiểu để làm cho tất cả các tiết học đều có số lần ngủ gật đúng bằng , hoặc in ra nếu không thể.
Dữ liệu vào
- Dòng 1: Số nguyên ()
- Dòng 2: số nguyên (, tổng )
- Dòng 3: Số nguyên ()
- dòng tiếp theo: Mỗi dòng chứa số nguyên ()
Dữ liệu ra
Với mỗi truy vấn, in ra một số nguyên trên một dòng — số thao tác tối thiểu, hoặc nếu không thể.
Ràng buộc
- ,
- , tổng
- Test 2-4:
- Test 5-7: tất cả
- Test 8-26: không có ràng buộc thêm
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 1 2 3 1 1 4 7 1 2 3 4 5 6 12 |
6 6 4 5 -1 4 5 |
Với : gộp tiết 1,2 thành 3; gộp tiết 5,6 thành 5; gộp tiết 4,5 thành 6; tách tiết 6 thành 3,3. Tổng cộng 4 thao tác. Với : tổng không chia hết cho 5 nên trả về . |
| 4 3 6 2 1 5 4 3 6 12 7 |
5 2 4 3 -1 |
Với : tổng , . Tiền tố chia hết cho 3 nên , đáp án . Với : 12 không chia hết cho 7 nên . |
Ghi chú
Không thể đạt trong ví dụ 1 vì tổng không chia hết cho 5 — dù có bao nhiêu thao tác cũng không thể chia đều.
Một thao tác tách hoặc gộp đều được tính là 1 thao tác.
Bình luận