比赛 SYOI 专题 4:分块(根号杂烩) 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 运行时间 2.420 s
代码语言 C++ 内存使用 7.49 MiB
提交时间 2024-04-18 19:04:46
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,a[100005],c[200015];
ll lowbit(ll n){
    return n&(-n);
}
ll sum(ll A,ll B){
    ll ans=0;
    for (ll i=B;i;i-=lowbit(i)){
        ans+=c[i];
    }
    for (ll i=A-1;i;i-=lowbit(i)){
        ans-=c[i];
    }return ans;
}
int main(){
    freopen("shulie.in","r",stdin);
    freopen("shulie.out","w",stdout);
    scanf("%lld",&n);
    for (ll i=1;i<=n;i++){
        scanf("%lld",&a[i]);
        c[i]+=a[i];
        c[i+lowbit(i)]+=c[i];
    }scanf("%lld",&m);
    for (ll i=1;i<=m;i++){
        string k;
        ll d,e;
        cin>>k;
        scanf("%lld%lld",&d,&e);
        if (k=="SUM"){
            printf("%lld\n",sum(d,e));
        }
        else{
            for (ll j=d;j<=n;j+=lowbit(j)){
                c[j]+=e;
            } 
        }
    }
    return 0;
}