可用一个sum
数组保存value
(保存输入数据)数组的前缀和。sum[i]
表示前i
个数值得和。即sum[i] = sum[i-1] + value[i]
求l
到r
区间得值只需要让sum[r] - sum[l-1]
,得出的结果即是答案。
#include <iostream>
using namespace std;
const int MAXN = 100005;
int value[MAXN];
int sum[MAXN]; //前缀和sum[i] = value[0] + value[1] + ... + value[i]
int main() {
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++) { //下标为1开始,防止下标越界
cin >> value[i];
sum[i] = sum[i-1] + value[i];
}
while(m--) {
int l, r;
cin >> l >> r;
int res = sum[r] - sum[l-1];
cout << res << endl;
}
return 0;
}