比赛 |
哈哈哈 |
评测结果 |
AAAAAAAWWW |
题目名称 |
求和问题 |
最终得分 |
70 |
用户昵称 |
tat |
运行时间 |
2.623 s |
代码语言 |
C++ |
内存使用 |
6.97 MiB |
提交时间 |
2019-03-07 21:58:14 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int t[1000001]={0},a1,b1,sum;
void ask(int f,int to,long long s){
if(b1<f||to<a1)return;
//cout<<s<<' '<<a1<<' '<<b1;
int mid=(f+to)/2;
if(a1<=f&&to<=b1){
sum+=t[s];
//cout<<' '<<s<<' ';
return;
}
else {
ask(f,mid,2*s);
ask(mid+1,to,s*2+1);
}
return;
}
int bt(int f,int to,long long s){
if(f==to){
cin>>t[s];
// cout<<s<<' '<<t[s]<<' ';
return t[s];
}
int mid=(f+to)/2;
t[s]=bt(f,mid,2*s)+bt(mid+1,to,2*s+1);
return t[s];
}
int main(int argc, char** argv) {
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
int n,m;
cin>>n;
bt(1,n,1);
//cout<<t[1];
cin>>m;
for(int i=1;i<=m;i++){
sum=0;
cin>>a1>>b1;
ask(1,n,1);
cout<<sum<<endl;
}
}