AcWing 242. 一个简单的整数问题
原题链接
简单
作者:
徐学神
,
2024-03-04 20:14:14
,
所有人可见
,
阅读 21
求赞!
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
ll n,m,a[N],bit[N];
ll LSB(ll x) {
return x&(-x);
}
void add(ll x,ll v) {
for(ll i=x; i<=n; i+=LSB(i)) bit[i]+=v;
}
ll psq(ll x) {
ll res=0;
for(ll i=x; i; i-=LSB(i)) res+=bit[i];
return res;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(ll i=1; i<=n; i++) {
cin>>a[i];
add(i,a[i]-a[i-1]);
}
while(m--) {
char opt;
cin>>opt;
if(opt=='C') {
ll l,r,d;
cin>>l>>r>>d;
add(l,d);
if(r<n) add(r+1,-d);
} else {
ll x;
cin>>x;
cout<<psq(x)<<"\n";
}
}
return 0;
}