rt,刚学分块,代码样例都没过,求助
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int N = 1e5 + 1, L = 1e3 + 1;
int n, m;
int num, a[N];
int blong[L], add[L];
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i ++ ) cin >> a[i];
num = sqrt(n);
for (int i = 1; i <= n; i ++ ) blong[i] = ceil(float(i) / num);
char op;
int l, r, d;
while (m -- )
{
cin >> op;
if (op == 'C')
{
cin >> l >> r >> d;
if (blong[l] == blong[r])
{
for (int i = l; i <= r; i ++ )
a[i] += d;
}
else
{
for (int i = l; i <= num * blong[l]; i ++ ) a[i] += d;
for (int i = blong[l] + 1; i < blong[r]; i ++ ) add[i] += d;
for (int i = (blong[r] - 1) * num + 1; i <= r; i ++ ) a[i] += d;
}
}
else
{
int sum = 0;
cin >> l >> r;
for (int i = l; i <= num * blong[l]; i ++ ) sum += a[i];
for (int i = blong[l] + 1; i < blong[r]; i ++ ) sum += (a[i] + add[i]);
for (int i = (blong[r] - 1) * num - 1; i <= r; i ++ ) sum += a[i];
cout << sum << endl;
}
}
return 0;
}