Pagini recente » Cod sursa (job #1528320) | Cod sursa (job #616105) | Cod sursa (job #516924) | Cod sursa (job #1277572) | Cod sursa (job #1355539)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[32768], i, n, m, s, d, x, poz, k, sum;
void Update(int nod, int st, int dr)
{ if (st==dr) v[nod]+=x;
else
{ int m=(st+dr)/2;
if (poz<=m) Update(2*nod, st, m);
else Update(2*nod+1, m+1, dr);
v[nod]=v[2*nod]+v[2*nod+1];
}
}
void Querry(int nod, int st, int dr)
{ if (s<=st && dr<=d) sum+=v[nod];
else
{ int m=(st+dr)/2;
if (s<=m) Querry(2*nod, st, m);
if (d>m) Querry(2*nod+1, m+1, dr);
}
}
int main()
{ f>>n>>m;
for (i=1; i<=n; ++i)
{ f>>x;
poz=i;
Update(1, 1, n);
}
for (i=1; i<=m; ++i)
{ f>>k;
if (k==0)
{ f>>poz>>x;
x=-x;
Update(1, 1, n);
}
else
{ f>>s>>d;
sum=0;
Querry(1, 1, n);
g<<sum<<'\n';
}
}
return 0;
}