Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
3.0s
Giới hạn bộ nhớ:
512M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho mảng ~A~ gồm ~N~ phần tử và ~Q~ truy vấn có dạng sau:
- ~l\ r\ x~: Gọi ~u_1 = a_l, u_2 = a_{l+1},\ldots, u_{r-l+1} = a_r~. Kiểm tra dãy u có phải hoán vị của một dãy cấp số cộng có công sai là ~x~ hay không. Nói cách khác:
- Sort mảng ~u~ theo thứ tự tăng dần, kiểm tra xem điều kiện sau có thỏa mãn hay không: ~u_i = u_{i-1} + x\ (\forall i: 1 < i \leq r-l+1)~.
Yêu cầu: Trả lời ~Q~ truy vấn trên. Với mỗi truy vấn, nếu truy vấn thỏa điều kiện trên thì xuất ra ~\text{YES}~, ngược lại xuất ra ~\text{NO}~.
LƯU Ý: Bài này sẽ được chấm theo thể thức IOI, tức chỉ khi bạn đúng hết các test trong subtask đó thì mới nhận được điểm của cả subtask đó.
Input
- Dòng đầu chứa 2 số nguyên dương ~N, Q~ (~N,Q \leq 4 \times 10^5~).
- Dòng thứ hai chứa ~N~ số nguyên không âm cách nhau bởi dấu cách: ~a_1, a_2, \ldots, a_N\ (a_i \leq 10^9)~.
- ~Q~ dòng tiếp theo, mỗi dòng chứa ~3~ số nguyên không âm ~l, r, x\ (1 \leq l \leq r \leq n,\ 0 \leq x \leq 10^9)~ là các truy vấn.
Output
- Xuất ra ~Q~ dòng, dòng thứ ~i~ xuất ra
YES
/NO
tương ứng với câu trả lời cho truy vấn thứ ~i\ (1 \leq i \leq Q)~.
Subtask:
- Subtask 1 ~(20\%~): ~n \leq 1000,\ q \leq 1000~.
- Subtask 2 ~(20\%)~: ~x \leq 1~ với tất cả truy vấn.
- Subtask 3 ~(60\%)~: Không có ràng buộc gì thêm.
Sample
Sample Input 1
7 3
3 7 5 11 8 14 3
1 3 2
1 3 3
3 6 3
Sample Output 1
YES
NO
YES
Giải thích: Xét mảng ~u~ ở truy vấn 1 sau khi đã sort lại, ta có ~u = \{3, 5, 7\}~. Dễ thấy ~5 = 3 + 2, \ 7 = 5 + 2~.
Bình luận