比赛 板子大赛 评测结果 AAAAAAAWWW
题目名称 求和问题 最终得分 70
用户昵称 Gao 运行时间 3.152 s
代码语言 C++ 内存使用 3.42 MiB
提交时间 2025-01-22 14:50:19
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,a[200005],mi[200005];
int to[200005],h[200005],cnt;
void build(int k,int l,int r){
    if(l==r){
        mi[k]=a[l];
        return;
    }
    int mid=(l+r)/2;
    build(k*2,l,mid);
    build(k*2+1,mid+1,r);
    mi[k]=mi[k*2]+mi[k*2+1];
}
int query(int k,int l,int r,int x,int y){
    if(l>y||r<x)return 0;
    if(l>=x&&r<=y)return mi[k];
    int mid=(l+r)/2;
    return query(k*2,l,mid,x,y)+query(k*2+1,mid+1,r,x,y);
}
int main(){
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    build(1,1,n);
    cin>>m;
    for(int i=1;i<=m;i++){
        int p,q;
        cin>>p>>q;
        cout<<query(1,1,n,p,q)<<endl;
    }
    return 0;
}