Pagini recente » Cod sursa (job #2269445) | Cod sursa (job #2181741) | Cod sursa (job #641063) | Cod sursa (job #2229319) | Cod sursa (job #2219074)
#include <fstream>
using namespace std;
#define MAX_N 15001
ifstream fIn("datorii.in");
ofstream fOut("datorii.out");
int numDays, numQueries, bit[MAX_N];
void updateBIT(int pos, int val) {
for (; pos <= numDays; pos += (pos & (-pos))) {
bit[pos] += val;
}
}
int getSum(int posX, int posY) {
int sum = 0;
for (; posY; posY -= (posY & (-posY))) {
sum += bit[posY];
}
for (--posX; posX; posX -= (posX & (-posX))) {
sum -= bit[posX];
}
return sum;
}
int main() {
char op;
int x, y;
fIn >> numDays >> numQueries;
for (register int i = 1; i <= numDays; ++i) {
fIn >> x;
updateBIT(i, x);
}
for (register int i = 0; i < numQueries; ++i) {
fIn >> op;
switch (op) {
case '0':
fIn >> x >> y;
updateBIT(x, -y);
break;
case '1':
fIn >> x >> y;
fOut << getSum(x, y) << '\n';
break;
}
}
return 0;
}