Pagini recente » Cod sursa (job #767303) | Cod sursa (job #745776) | Cod sursa (job #1018734) | Cod sursa (job #2696984) | Cod sursa (job #2219062)
#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 + 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() {
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;
}
}
fIn.close();
fOut.close();
return 0;
}