Pagini recente » Cod sursa (job #1022327) | Cod sursa (job #2473999) | Cod sursa (job #704816) | Cod sursa (job #1367683) | Cod sursa (job #1628901)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,s,i,val,poz,x,y,semn,a[150000001];
void achitare(int nod, int st, int dr)
{int mij;
if(st==dr)
a[nod]=a[nod]+val;
else{
mij=(st+dr)/2;
if(mij>=poz)
achitare(nod*2,st,mij);
else
achitare(nod*2+1,mij+1,dr);
a[nod]=a[nod*2]+a[nod*2+1];
}
}
void interogare(int nod,int st,int dr)
{int mij;
if(x<=st&&dr<=y)
s=s+a[nod];
else{
mij=(st+dr)/2;
if(x<=mij)
interogare(nod*2,st,mij);
if(y>mij)
interogare(nod*2+1,mij+1,dr);
}
}
int main()
{f>>n>>m;
for(i=1;i<=n;++i)
{f>>val;
poz=i;
achitare(1,1,n);
}
for(i=1;i<=m;++i)
{f>>semn>>x>>y;
if(semn==0)
{ val=y;
poz=x;
achitare(1,1,n);
}
else
{s=0;
interogare(1,1,n);
g<<s<<'\n';
}
}
return 0;
}