记录编号 228250 评测结果 AAAAAAAAAA
题目名称 求和问题 最终得分 100
用户昵称 GravatarHzoi_Yniverse 是否通过 通过
代码语言 C++ 运行时间 1.402 s
提交时间 2016-02-19 09:28:42 内存使用 0.47 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=10001;
int n;
long long a[maxn],c[maxn];
void Init();
void Updata(int);
int Lowbit(int);
long long Get_sum(int);
int main(){
	freopen("sum.in","r",stdin);
	freopen("sum.out","w",stdout);
	Init();
	return 0;
}
void Init(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
	    scanf("%lld",&a[i]);//cout<<"dsadasd";
		Updata(i);
	}
	int m;scanf("%d",&m);
	for(int i=1;i<=m;i++){
		int s,t;scanf("%d%d",&s,&t);
		long long sum=Get_sum(t)-Get_sum(s-1);
		printf("%lld",sum);
	}
}
void Updata(int x){
	for(int i=x;i<=n;i+=Lowbit(i)){
		c[i]+=a[x];
	}
}
int Lowbit(int x){
	return x&(-x);
}
long long Get_sum(int x){
	long long tot=0;
	for(int i=x;i>0;i-=Lowbit(i)) tot+=c[i];
	return tot;
}