Pagini recente » Cod sursa (job #1501903) | Cod sursa (job #2792939) | Cod sursa (job #1891863) | Cod sursa (job #349130) | Cod sursa (job #1690689)
#include<fstream>
using namespace std;
int n, m, x, op, poz, val, i, i2, A[100005], s, y, k, p, u;
void update(int poz, int val)
{
for(i2=poz; i2<=n; i2+=(i2&(-i2)))
A[i2]+=val;
}
int query(int poz)
{
s=0;
for(i2=poz; i2>0; i2-=(i2&(-i2)))
s+=A[i2];
return s;
}
ifstream in("aib.in");
ofstream out("aib.out");
int main()
{
in>>n>>m;
for(i=1; i<=n; i++)
{
in>>x;
update(i, x);
}
for(;m--;)
{
in>>op;
if(op==0)
{
in>>poz>>val;
update(poz, val);
continue;
}
if(op==1)
{
in>>x>>y;
out<<query(y)-query(x-1)<<"\n";
continue;
}
in>>k;
p=1; u=n;
while(p<=u)
{
int mij=p+(u-p)/2;
if(query(mij)>=k)
u=mij-1;
else
p=mij+1;
}
query(p)==k?out<<p<<"\n":out<<"-1\n";
}
return 0;
}