Tổng trên đoạn

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python

Cho một dãy gồm ~n~ số nguyên và ~q~ câu hỏi. Mỗi câu hỏi gồm hai số ~l, r~ và yêu cầu tính tổng ~a_l + a_{l+1} + \dots + a_r~. Với ~n, q~ lớn, hãy dùng mảng tổng tiền tố: ~S_i = a_1 + \dots + a_i~ thì tổng đoạn ~[l, r]~ bằng ~S_r - S_{l-1}~.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên ~n, q~ (~1 \le n, q \le 10^5~).

Dòng thứ hai chứa ~n~ số nguyên ~a_1, \dots, a_n~ (~|a_i| \le 10^9~).

~q~ dòng tiếp theo, mỗi dòng gồm hai số nguyên ~l, r~ (~1 \le l \le r \le n~).

Kết quả

In ra ~q~ dòng, mỗi dòng là tổng của đoạn tương ứng.

Ví dụ

Ví dụ 1

Input:

5 3
1 2 3 4 5
1 5
2 4
3 3

Output:

15
9
3

Ví dụ 2

Input:

1 1
-7
1 1

Output:

-7

Giải thích

Với dãy 1 2 3 4 5 và đoạn ~[2, 4]~: ~2 + 3 + 4 = 9 = S_4 - S_1 = 10 - 1~. Cộng trực tiếp từng đoạn có thể mất ~n \times q = 10^{10}~ phép tính.


Đang tải...