Pagini recente » Cod sursa (job #2605670) | Cod sursa (job #2789513) | Cod sursa (job #2916665) | Cod sursa (job #1539399) | Cod sursa (job #1349326)
#include <iostream>
#include <fstream>
#define N 15003
using namespace std;
int a[N];
int n,m,val,poz,start,stop,sol;
void Update(int nod, int st,int dr )
{
if(st==dr)
{
a[nod]+=val;
return ;
}
int mij=(st+dr)/2;
if(poz<=mij) Update(2*nod,st,mij);
else Update(2*nod+1,mij+1,dr);
a[nod]=a[nod*2]+a[nod*2+1];
}
void Query(int nod,int st,int dr)
{
if(start<=st && stop>=dr)
{
sol+=a[nod];
return ;
}
int mij=(st+dr)/2;
if(mij>=start) Query(2*nod,st,mij);
if(mij<stop) Query(2*nod+1,mij+1,dr);
}
int main()
{
ifstream fin("datorii.in");
fin>>n>>m;
int i,x,op,y;
for(i=1; i<=n; i++)
{
fin>>x;
poz=i;
val=x;
Update(1,1,n);
}
// for(i=1; i<=n+n; i++)
// cout<<a[i]<<" ";
// cout<<"\n";
ofstream fout("datorii.out");
for(i=1; i<=m; i++)
{
fin>>op>>x>>y;
if(op)
{
sol=0;
start=x;
stop=y;
Query(1,1,n);
fout<<sol<<"\n";
}
else
{
poz=x;
val=-y;
Update(1,1,n);
}
}
return 0;
}