Pagini recente » Cod sursa (job #715187) | Cod sursa (job #1111665) | Cod sursa (job #1105613) | Cod sursa (job #3261188) | Cod sursa (job #1363116)
#include <iostream>
#include<fstream>
#define N 20000
using namespace std;
int n,m,x,poz,A[N*4],answer,a,b;
void update(int st, int dr, int nod)
{
if (st==dr)
A[nod]+=x;
else
{
int mij=(st+dr)/2;
if (poz<=mij)
update(st,mij,nod*2);
else
update(mij+1,dr,nod*2+1);
A[nod]=A[nod*2]+A[nod*2+1];
}
}
void query(int st, int dr, int nod)
{
if (a<=st && dr<=b)
answer+=A[nod];
else
{
int mij=(st+dr)/2;
if (a<=mij)
query(st,mij,nod*2);
if (b>=mij+1)
query(mij+1,dr,nod*2+1);
}
}
int main()
{
int i,cod;
fstream f,g;
f.open("datorii.in",ios::in);
g.open("datorii.out",ios::out);
f>>n>>m;
for (i=1;i<=n;i++)
{
f>>x;
poz=i;
update(1,n,1);
}
for (i=1;i<=m;i++)
{
f>>cod;
if (cod==0)
{
f>>poz>>x;
x=-x;
update(1,n,1);
}
else
{
f>>a>>b;
answer=0;
query(1,n,1);
g<<answer<<'\n';
}
}
}