Mỗi dãy con được gọi là dãy con liên tiếp nếu dãy con đó có dạng \(a_{i},\ a_{i + 1},\ a_{i + 2},\ \ldots,\ a_{j}\) với \(1 \leq i \leq j \leq n\), là dãy con của dãy a gồm \(n\) phân tử cho trước.
Cho một dãy gồm \(n\) số nguyên dương \(a_{1},\ a_{2},\ \ldots,\ a_{n}\) và hai số nguyên dương \(p,\ q\). Người ta muốn đếm số các dãy con liên tiếp của dãy số đã cho có tổng các số lớn hơn hoặc bằng \(p\) và nhỏ hơn hoặc bằng \(q.\)
Yêu cầu: Hãy lập trình đếm số các dãy con liên tiếp thỏa mãn điều kiện bài toán.
Dữ liệu vào:
+ Dòng đầu ghi ba số nguyên \(n,\ p,q\ \left( 1 \leq n \leq 10^{5};1 \leq p,q \leq 10^{18},p < q \right);\)
+ Dòng thứ hai ghi n số nguyên \(a_{1},\ a_{2},\ \ldots,\ a_{n}\ (1 \leq a_{i} \leq 1000,\ i = 1,\ 2,\ \ldots,n)\);
Kết quả:
+ Ghi một số nguyên là số các dãy con liên tiếp thỏa mãn có tổng các số lớn hơn hoặc bằng \(p\) và nhỏ hơn hoặc bằng \(q\).
Ví dụ:
Input | Output | Giải thích |
---|---|---|
1 1 2 1 | 1 | Từ test ví dụ 2: Ta có các dãy con thỏa mãn là: (3, 2); (2, 4); (4, 2); (3, 2, 4); (2, 4, 2); (4, 2, 1); (2, 1, 2); (2, 4, 2, 1); (4, 2, 1, 2). Vậy kết quả 9 dãy con. |
6 5 10 3 2 4 2 1 2 | 9 | |
12 20 35 5 4 6 4 3 4 11 2 14 5 9 3 | 19 |
Ràng buộc:
Có 40% số test tương ứng 40% số điểm có \(1 < n \leq 100,q \leq 10^{9}\);
Có 40% số test tương ứng 40% số điểm có \(100 < n \leq 5000,\ q \leq 10^{9}\);
Có 20% số test tương ứng 20% số điểm thỏa \(5000 < n \leq 10^{5},\ q \leq 10^{18}\);
Code tích cực |
---|
Trong 24h |
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |