Pagini recente » Cod sursa (job #1000156) | Cod sursa (job #1623751) | Cod sursa (job #85591) | Cod sursa (job #3150289) | Cod sursa (job #1520396)
#include <bits/stdc++.h>
#define UB(x) (x&(-x))
using namespace std;
int n,m,i,x,aib[100010],pi,ps,p,va,su,in;
char ce;
void Add(int poz,int val)
{
int i;
for(i=poz; i<=n; i+=UB(i))
aib[i]+=val;
}
int Suma(int a,int b)
{
int i,s1=0,s2=0;
for(i=a-1; i>0; i-=UB(i))
s1+=aib[i];
for(i=b; i>0; i-=UB(i))
s2+=aib[i];
return s2-s1;
}
int main()
{
freopen("aib.in","r",stdin);
ofstream g ("aib.out");
scanf("%d%d",&n,&m);
for(i=1; i<=n; ++i)
{
scanf("%d",&x);
Add(i,x);
}
for(i=1; i<=m; ++i)
{
scanf("\n");
scanf("%c",&ce);
if(ce=='0')
{
scanf("%d%d",&p,&va);
Add(p,va);
}
else if(ce=='1')
{
scanf("%d%d",&pi,&ps);
g<<Suma(pi,ps)<<'\n';
}
else
{
scanf("%d",&su);
for(in=1; in<=n; ++in)
if(aib[in]==su)
{
g<<in<<'\n';
break;
}
}}
return 0;
}