比赛 |
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;
}