记录编号 |
131048 |
评测结果 |
AAAAAAAAAA |
题目名称 |
求和问题 |
最终得分 |
100 |
用户昵称 |
微凉徒眸意 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.534 s |
提交时间 |
2014-10-23 20:21:18 |
内存使用 |
0.36 MiB |
显示代码纯文本
/*【问题描述】
在一个长度为n的整数数列中取出连续的若干个数,并求它们的和。
【输入格式】
输入由若干行组成,第一行有一个整数n
第二行有n个整数
第三行有一个整数m
下面m行,每行两个整数i与j(i<=j),表示求和的起始和终止位置。
【输出格式】
输出有m行, 每行一个整数,表示这个数段数列的和。
【输入样例】
输入文件
8
2 3 4 7 8 9 10 234
5
2 3
4 7
1 3
7 7
7 8
输出文件
7
34
9
10
244
【数据规模】
对于40%的数据,n<=1000,m<=1000,数列中的数不超过32767,数列的和不超过10^9
对于70%的数据,n<=10000,m<=2*10^5,数列中的数不超过32767
对于100%的数据,n<=10000,m<=2*10^5,数列中的数不超过10^9*/
#include <stdio.h>
#define NMAX 10000
#define MMAX 100000
long long sum[NMAX+1];
int main(){
int n,m;
int s,t;
int i;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&n);
getchar();
for(i=1;i<=n;i++){
scanf("%lld",sum+i);
getchar();
sum[i]+=sum[i-1];
}
scanf("%d",&m);
getchar();
for(i=0;i<m;i++){
scanf("%d%d",&s,&t);
getchar();
printf("%lld\n",sum[t]-sum[s-1]);
}
return 0;
}