Pagini recente » Cod sursa (job #2784092) | Cod sursa (job #1337212) | Cod sursa (job #1971174) | Cod sursa (job #3137674) | Cod sursa (job #2615508)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("datorii.in");
ofstream fout("datorii.out");
int arbint[400010],a,x,n,i,poz,b,val,st,dr,maxi,m,op;
inline void query(int nod,int a,int b)
{
if(st<=a && b<=dr)
{
maxi+=arbint[nod];
return;
}
int mij=(a+b)/2;
if(st<=mij)
query(nod*2,a,mij);
if(mij<dr)
query(nod*2+1,mij+1,b);
}
inline void update(int nod,int a,int b)
{
if(a==b)
{
if(op!=-1)
arbint[nod]-=val;
else arbint[nod]=val;
return;
}
int mij=(a+b)/2;
if(poz<=mij)
update(nod*2,a,mij);
else update(nod*2+1,mij+1,b);
arbint[nod]=arbint[nod*2]+arbint[nod*2+1];
}
int main()
{
fin>>n>>m;
op=-1;
for(i=1;i<=n;i++)
{
fin>>x;
val=x;
poz=i;
update(1,1,n);
}
for(i=1;i<=m;i++)
{
fin>>op>>a>>b;
if(op==1)
{
st=a;
dr=b;
maxi=0;
query(1,1,n);
fout<<maxi<<'\n';
}
else
{
val=b;
poz=a;
update(1,1,n);
}
}
return 0;
}