Pagini recente » Clasament oni2013_cls10 | Cod sursa (job #2287740) | Cod sursa (job #1920009) | Istoria paginii runda/gim_sim_3 | Cod sursa (job #2294953)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[15001],n,m,q,x,y;
const int b=32000;
struct parser{
char *B,*E,*p;
parser()
{
B=new char[b+10];
E=B+b;
Load();
}
parser &operator>>(int&x)
{
while(*p<'0' || *p>'9')Next();
x=0;
while(*p>='0' && *p<='9')
{
x=x*10+*p-'0';
Next();
}
return *this;
}
void Load()
{
p=B;
memset(B,0,b);
fread(B,1,b,stdin);
}
void Next()
{
p++;
if(p==E)Load();
}
};
void update(int ind,int val)
{
while(ind<=n)
{
v[ind]+=val;
ind+=ind&(-ind);
}
}
int getsum(int ind)
{
int sum=0;
while(ind>0)
{
sum+=v[ind];
ind-=ind&(-ind);
}
return sum;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
parser fin;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>x;
update(i,x);
}
for(;m;m--)
{
fin>>q>>x>>y;
if(q)
{
printf("%d\n",getsum(y)-getsum(x-1));
}
else{
update(x,-y);
}
}
return 0;
}