Pagini recente » Cod sursa (job #1672624) | Cod sursa (job #1694803) | Cod sursa (job #1696524) | Cod sursa (job #1672549) | Cod sursa (job #301435)
Cod sursa(job #301435)
#include <fstream.h>
#define max 100010
ofstream g("aib.out");
long long n, m, i, a[max], s, x, y;
int p;
void update(long i, long x)
{
for(;i<=n;i+=i&-i)
a[i] += x;
}
long long ask(long i)
{
long long sum = 0;
for(;i;i-=i&-i)
sum += a[i];
return sum;
}
void binary_search(long x)
{
long st = 1, dr = n, mij;
while(st <= dr)
{
mij = (st+dr)/2;
if(x == ask(mij))
{
g<<mij<<"\n";
return;
}
else
if(x < ask(mij))
dr = mij-1;
else
st = mij+1;
}
g<<"-1\n";
}
int main()
{
ifstream f("aib.in");
f>>n>>m;
for(i = 1 ; i <= n ; i++)
{
f>>x;
update(i, x);
}
for(i = 1 ; i <= m ; i++)
{
f>>p;
if(p == 0)
{
f>>x>>y;
update(x, y);
}
else
if(p == 1)
{
f>>x>>y;
g<<ask(y) - ask(x-1)<<"\n";
}
else
{
f>>x;
binary_search(x);
}
}
return 0;
}