子段求和
描述
给定一个长度为n的数列a1,a2,…,an,共进行q次查询,每次求出从第i个元素到第j个元素的加和。
输入
第1行一个整数n,第2行为n个整数a1,…,an;第3行一个整数q,第4行开始的q行,每行2个数,代表每次查询的i和j。
输出
共q行,每行为一次查询的求和结果。
样例输入
5
1 3 7 9 -1
2
2 4
3 5
样例输出
19
15
数据范围
1 ≤ i ≤ j ≤ n ≤ 10^5
-10^5 ≤ ai ≤ 10^5
1 ≤ q ≤ 10^5
子段求和
描述
给定一个长度为n的数列a1,a2,…,an,共进行q次查询,每次求出从第i个元素到第j个元素的加和。
输入
第1行一个整数n,第2行为n个整数a1,…,an;第3行一个整数q,第4行开始的q行,每行2个数,代表每次查询的i和j。
输出
共q行,每行为一次查询的求和结果。
样例输入
5
1 3 7 9 -1
2
2 4
3 5
样例输出
19
15
数据范围
1 ≤ i ≤ j ≤ n ≤ 10^5
-10^5 ≤ ai ≤ 10^5
1 ≤ q ≤ 10^5
#include <iostream>
int main()
{
int n, q;
std::cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++)
std::cin >> a[i];
std::cin >> q;
while (q--)
{
int i, j;
std::cin >> i >> j;
int sum = 0;
for (int t = i - 1; t < j; t++)
sum += a[t];
std::cout << sum << '\n';
}
delete[]a;
return 0;
}