Pagini recente » Cod sursa (job #2165222) | Borderou de evaluare (job #1022908) | Cod sursa (job #901999) | Borderou de evaluare (job #2016068) | Cod sursa (job #1970492)
#include <bits/stdc++.h>
#define pas(x) ((x-1)^x)&x
using namespace std;
ifstream f("aib.in");
ofstream g("aib.out");
int n,m,aib[200005],v,a,b,k;
void update(int x,int val)
{
for(int i=x;i<=n;i+=pas(i))
aib[i]+=val;
}
int suma(int x)
{
int sum=0;
for(int i=x;i>0;i-=pas(i))
sum+=aib[i];
return sum;
}
int caut()
{
for(int i=1;i<=n;i++)
if(suma(i)==k)
return i;
return -1;
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)
f>>a,update(i,a);
for(int i=1;i<=m;i++)
{
f>>v;
if(v==0)
f>>a>>b,update(a,b);
else
if(v==1)
f>>a>>b,g<<suma(b)-suma(a-1)<<'\n';
else
f>>k,g<<caut()<<'\n';
}
return 0;
}