cf1136E. Nastya Hasn't Written a Legend(二分 线段树)(二)
ad();
for(int i = 2; i <= N; i++)
K[i] = read() + K[i - 1];
memcpy(val, a, sizeof(a));
T[0].Build(1, 1, N);
memcpy(val, K, sizeof(K));
T[1].Build(1, 1, N);
for(int i = 1; i <= N; i++) S[i] = S[i - 1] + K[i];
int Q = read();
while(Q--) {
char c = 'g';
while(c != 's' && c != '+') c = getchar();
if(c == '+') {
int x = read(), v = read();
Modify(x, v);
}
else {
int l = read(), r = read();
int pre = T[0].IntQuery(1, 1, N, l, r);
int nxt = S[r] - S[l - 1] - T[1].IntQuery(1, 1, N, l, r);
cout << pre + nxt << '\n';
}
c = 'g';
}
return 0;
}
|