Pagini recente » Cod sursa (job #2096154) | Cod sursa (job #2853472) | Cod sursa (job #1406880) | Cod sursa (job #628136) | Cod sursa (job #2219071)
#include <cstdio>
using namespace std;
#define MAX_N 15001
FILE *pFileIn = fopen("datorii.in", "rt");
FILE *pFileOut = fopen("datorii.out", "wt");
int numDays, numQueries, bit[MAX_N];
void updateBIT(int pos, int val) {
for (; pos <= numDays; pos += (pos & (~pos + 1))) {
bit[pos] += val;
}
}
int getSum(int posX, int posY) {
int sum = 0;
for (; posY; posY -= (posY & (~posY + 1))) {
sum += bit[posY];
}
for (--posX; posX; posX -= (posX & (~posX + 1))) {
sum -= bit[posX];
}
return sum;
}
int main() {
int op, x, y;
fscanf(pFileIn, "%d %d", &numDays, &numQueries);
for (register int i = 1; i <= numDays; ++i) {
fscanf(pFileIn, "%d", &x);
updateBIT(i, x);
}
for (register int i = 0; i < numQueries; ++i) {
fscanf(pFileIn, "%d ", &op);
switch (op) {
case 0:
fscanf(pFileIn, "%d %d", &x, &y);
updateBIT(x, -y);
break;
case 1:
fscanf(pFileIn, "%d %d", &x, &y);
fprintf(pFileOut, "%d\n", getSum(x, y));
break;
}
}
return 0;
}