Pagini recente » Cod sursa (job #1031529) | Cod sursa (job #947413) | Cod sursa (job #3163478) | Cod sursa (job #361159) | Cod sursa (job #1916555)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int a[4*15000+66],n,m;
int Val,Poz;
int first,last,S;
void Update(int nod,int st,int dr)
{
if(st==dr)
{
if(a[nod]!=0)
{
a[nod]=a[nod]+Val;
//cout<<a[nod]<<" "<<Val<<'\n';
}
else 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);
}
void Query(int nod,int st,int dr)
{
if(st==dr)
{
S=S+a[nod];
return;
}
int mij=(st+dr)/2;
if(first<=mij) Query(2*nod,st,mij);
if(last>mij) Query(2*nod+1,mij+1,dr);
}
int main()
{
fin>>n>>m;
int x,c,b;
for(int i=1;i<=n;i++)
{
fin>>x;
Val=x;
Poz=i;
Update(1,1,n);
}
for(int i=1;i<=m;i++)
{
S=0;
fin>>x>>c>>b;
if(x==1)
{
first=c;
last=b;
Query(1,1,n);
fout<<S<<'\n';
}
else {
Val=-b;
Poz=c;
Update(1,1,n);
}
}
return 0;
}