Pagini recente » Cod sursa (job #1610784) | Profil thenorsk | Cod sursa (job #63049) | Cod sursa (job #222215) | Cod sursa (job #1046876)
#include<fstream>
using namespace std;
ifstream f("aib.in");
ofstream g("aib.out");
int n,m,p,t,a,b,v[100005];
inline int LSB(int x)
{
return (x&(-x));
}
inline void update(int poz, int val)
{
for (int i=poz;i<=n;i+=LSB(i))
v[i]+=val;
}
inline int Sum(int poz)
{
int sum=0;
for (int i=poz;i;i-=LSB(i))
sum+=v[i];
return sum;
}
inline int cb(int val)
{
int i=1,j=n,m,x;
while (i<=j)
{
m=(i+j)>>1;
x=Sum(m);
if (val==x) return m;
else
{
if (x<val) i=m+1;
else j=m-1;
}
}
return -1;
}
int main()
{
int i;
f>>n>>m;
for (i=1;i<=n;++i)
{
f>>p;
update(i,p);
}
for (i=1;i<=m;++i)
{
f>>t>>a;
if (t==2) g<<cb(a)<<'\n';
else
{
f>>b;
if (t) g<<Sum(b)-Sum(a-1)<<'\n';
else update(a,b);
}
}
return 0;
}