一维前缀和 - 包含输入输出优化
2017-08-27 09:30:59
writer:pprp
很基础的一个知识点,想要求区间内的和,可以考虑用两个前n项和 相减
输入输出部分,采用自己写的一个函数,用getchar() putchar()来读取和输出结果
用的时候应该注意具体的具体的类型应该根据题目选定
代码如下:
/*
@theme:一维前缀和
@writer:pprp
@declare:a[i] = s[i] - s[i-1]
@date:2017/8/27
*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
int n, m, a[maxn];
//输入优化
inline int read()
{
int X=0,w=1; char ch=0;
while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();
return X*w;
}
inline void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
int main()
{
n = read();
m = read();
a[0] = read();
//前n项求和 S[i]
for(int i = 1; i < n ; i++)
{
a[i] = read();
a[i] += a[i-1];
}
for(int i = 0 ; i < m ; i++)
{
int l, r;
l = read();
r = read();
if(l == 1)
write(a[r-1]);
else
write(a[r-1] - a[l-2]);
putchar('\n');
}
return 0;
}
代码改变世界