AcWing 242. 一个简单的整数问题
原题链接
简单
作者:
史一帆
,
2022-01-07 08:51:11
,
所有人可见
,
阅读 168
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int c[N], arr[N];
int n, m;
int lowbit(int x)
{
return x & -x;
}
int sum(int i)
{
int res = 0;
for (; i > 0; i -= lowbit(i))
res += c[i];
return res;
}
void add(int i, int z)
{
for (; i <= n; i += lowbit(i))
c[i] += z;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i ++ ) cin >> arr[i];
while (m -- )
{
char op;
cin >> op;
if (op == 'Q')
{
int x;
cin >> x;
cout << arr[x] + sum(x) << endl;
}
else
{
int a, b, c;
cin >> a >> b >> c;
add(a, c);
add(b + 1, -c);
}
}
return 0;
}