Tổng các đường đi
Đề bài
Mô tả
Có ô được đánh số từ trái sang phải. Ta đặt một robot vào một ô bất kỳ, sau đó robot phải thực hiện đúng bước di chuyển.
Mỗi bước, robot đang ở ô phải di chuyển sang ô hoặc ô , với điều kiện ô đích vẫn nằm trong đoạn (robot không được đi ra ngoài).
Dãy các ô mà robot đi qua theo thứ tự (kể cả ô ban đầu) tạo thành một đường đi tốt. Gọi là dãy ô của một đường đi tốt ( là ô đặt robot, là ô robot đang đứng sau bước). Mỗi ô có một giá trị . Giá trị của đường đi bằng
Hãy tính tổng giá trị của tất cả các đường đi tốt, lấy dư cho . Hai đường đi tốt là khác nhau nếu ô xuất phát khác nhau, hoặc tồn tại bước mà vị trí robot sau bước là khác nhau.
Ngoài ra có lần cập nhật. Mỗi lần cập nhật thay đổi giá trị của đúng một ô. Sau mỗi lần cập nhật, hãy in ra tổng giá trị mới của tất cả đường đi tốt (lấy dư ).
Dữ liệu vào
- Dòng đầu chứa ba số nguyên , , .
- Dòng thứ hai chứa số nguyên .
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và , nghĩa là gán .
Dữ liệu ra
In ra số nguyên, số thứ là tổng giá trị của tất cả đường đi tốt sau khi thực hiện cập nhật đầu tiên, lấy dư .
Ràng buộc
- \leq n \leq 50001 \leq k \leq 50001 \leq q \leq 2 \cdot 10^5$.
- \leq a_i \leq 10^9$.
- Trong mỗi cập nhật: , .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 5 3 5 1 4 2 1 9 2 4 3 6 4 6 5 2 |
62 58 78 86 86 |
Với , các đường đi tốt là . Ban đầu ; sau cập nhật đầu tiên , tổng giá trị đường đi là . |
| 5 2 5 3 5 1 4 2 1 9 2 4 3 6 4 6 5 2 |
157 147 207 227 227 |
Cùng dữ liệu như trên nhưng : mỗi đường đi có ô. |
| 4 40 6 92 21 82 46 3 56 1 72 4 28 1 97 2 49 2 88 |
239185261 666314041 50729936 516818968 766409450 756910476 |
nhỏ nhưng lớn nên số đường đi rất nhiều, kết quả phải lấy dư. |
Bình luận