- 欧浩 的博客
一个简单的整数问题
- @ 2025-7-20 12:14:58
#include <bits/stdc++.h>
//#define int long long
#define lowbit(x) x&-x
using namespace std;
const int TOP=1e5+5;
int n,m;
int s[TOP];
int c[TOP];
void add(int x,int y)
{
int f;
for(int f=x;f<=n;f+=lowbit(f))
c[f]+=y;
return ;
}
int ask(int x)
{
int f;
int ans=0;
for(f=x;f;f-=lowbit(f))
ans+=c[f];
return ans;
}
signed main()
{
int f;
cin>>n>>m;
int shang=0;
for(f=1;f<=n;f++)
{
int num;
cin>>num;
add(f,num-shang);
shang=num;
}
for(f=1;f<=m;f++)
{
char a;
cin>>a;
if(a=='C')
{
int l,r,d;
cin>>l>>r>>d;
add(l,d);
if(r<n)
add(r+1,-d);
}
if(a=='Q')
{
int x;
cin>>x;
cout<<ask(x)<<endl;
}
}
return 0;
}
诚信做人,请勿抄袭