Pagini recente » Cod sursa (job #2038579) | Cod sursa (job #2303497) | Cod sursa (job #2489172) | Cod sursa (job #643547) | Cod sursa (job #2737436)
#include <iostream>
#include <fstream>
using namespace std;
int aib[100005];
void update(int poz, int val,int n)
{
while(poz<=n)
{
aib[poz]+=val;
poz+=(poz&(-poz));
}
}
void update1(int poz, int val,int n)
{
while(poz<=n)
{
aib[poz]-=val;
poz+=(poz&(-poz));
}
}
int querry(int p)
{
int s=0;
while(p>0)
{
s+=aib[p];
p-=(p&(-p));
}
return s;
}
/*int verif(int val,int n)
{
int st=1,dr=n,mij,last=-1;
while(st<=dr)
{
mij=(st+dr)/2;
int temp=querry(mij);
if(temp>=val)
{
if(temp==val)
last=mij;
dr=mij-1;
}
else
st=mij+1;
}
return last;
}*/
int main()
{
int x,y,t,m,n;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin>>n>>m;
for(int i=1;i<=n;++i)
{
cin>>x;
update(i,x,n);
}
while(m--)
{
cin>>t;
/*if(t==2)
{
cin>>x;
cout<<verif(x,n)<<"\n";
}
else
{*/
cin>>x>>y;
if(t==1)
cout<<querry(y)-querry(x-1)<<"\n";
else
update1(x,y,n);
//}
}
return 0;
}