Pagini recente » Cod sursa (job #372643) | Cod sursa (job #1573883) | Cod sursa (job #1278754) | Monitorul de evaluare | Cod sursa (job #1303437)
#include <iostream>
#include <fstream>
using namespace std;
#define zeros(x) ( (x ^ (x - 1)) & x )
void Add(int *v,int n, int pos, int quantity)
{
int i;
for (i = pos; i <= n; i += zeros(i))
v[i] += quantity;
}
int Compute(int *v,int pos)
{
int i, ret = 0;
for (i = pos; i > 0; i -= zeros(i))
ret += v[i];
return ret;
}
int main()
{
int v[15001], n, m, v1, v2, com, i,st, dr ;
ifstream ifs("datorii.in");
ofstream ofs("datorii.out");
ifs >> n >> m;
for (i = 0; i <= n; i++) {
v[i] = 0;
}
for (i = 1; i <= n; i++) {
ifs >> com;
Add(v, n, i, com);
}
for (i = 1; i <= m; i++) {
ifs >> com >> v1 >> v2;
if (com == 0) {
Add(v, n, v1, -v2);
}
else {
st = Compute(v, v1-1);
dr = Compute(v, v2);
ofs << dr-st<<endl;
}
}
ifs.close();
ofs.close();
}