?P8218 【深进1.例1】求区间和
给定?�n?个正整数组成的数列?�1,�2,??,��a1?,a2?,?,an??和?�m?个区间?[��,��][li?,ri?],分别求这?�m?个区间的区间和。
对于所有测试数据,�,�≤105,��≤104n,m≤105,ai?≤104
第一行,为一个正整数?�n?。
第二行,为?�n?个正整数?�1,�2,??,��a1?,a2?,?,an?
第三行,为一个正整数?�m?。
接下来?�m?行,每行为两个正整数?��,��li?,ri??,满足1≤��≤��≤�1≤li?≤ri?≤n
共?�m?行。
第?�i?行为第?�i?组答案的询问。
输入 #1复制
4 4 3 2 1 2 1 4 2 3
输出 #1复制
10 5
样例解释:第?11?到第?44?个数加起来和为?1010。第?22?个数到第?33?个数加起来和为?55。
对于?50%50%?的数据:�,�≤1000n,m≤1000;
对于?100%100%?的数据:1≤�,�≤1051≤n,m≤105,1≤��≤1041≤ai?≤104
#include<stdio.h>
#include<ctype.h>
int read()
{
int x=0,f=1;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int s[100050],a[100050],n,f,m,l,r;
int main()
{
n=read();
for(int i=1;i<=n;i++){
s[i]=s[i-1]+(a[i]=read());
}
m=read();
for(int i=1;i<=m;i++){
l=read();
r=read();
printf("%d\n",s[r]-s[l-1]);
}
}