序号:1372
[绍兴2020]统计人口
Time Limit:1s Memory Limit:512MB
题目描述:
第七次全国人口普查开始了,小B要去“幸福村”统计人口数量。“幸福村”里住着n户人家,呈线性排列,从左到右的编号为1到n。通过电脑平台,小B统计到了每户人家的人口数量ai。当小B去“幸福村”核查数据时,如果编号为x到y的都不在家(无法核查不在家的人口数量),求小B能核查到多少人口数量?
输入格式:
第一行2个整数n,m。 第二行n个数a1,a2,a3…an 表示每户人家的人口数。 接下来m行,每行两个数x,y,表示编号为x到y的不在家。
输出格式:
共m行,每行一个数,表示当编号为x到y的不在家时,小B能核查到多少人口数量。
输入样例:
4 2
3 1 5 6
1 3
3 3
输出样例:
6
10
样例解释
有4户,每户分别有3人,1人,5人,6人。当编号为1~3的不在家时,只能统计到第4户的人口数量,有6人;当编号为3~3,也就是只有编号为3的在家时,能统计到第1,2,4户的人口数量,共有10人。
数据范围约定
对于100%的数据,1≤n≤50000,1≤m≤50000,1≤x≤y≤n,保证输出的所有答案不超231-1 范围。提示:输入输出数据比较多,建议用scanf、printf。
#include<bits/stdc++.h>
using namespace std;
int a[101010],p[101010];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
p[i]=p[i-1]+a[i];
}
while(m--){
int l,r;
cin>>l>>r;
cout<<p[n]-p[r]+p[l-1]<<"\n";
}
return 0;
}