Pagini recente » Cod sursa (job #1274648) | Cod sursa (job #1821030) | Cod sursa (job #1730412) | Cod sursa (job #1222812) | Cod sursa (job #2923876)
#include <bits/stdc++.h>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("aib.in");
ofstream out("aib.out");
int n,m,op,poz,val,p1,p2,a;
vector<int> AIB(100005,0);
void update(int j,int adaug)
{
while(j<=n)
{
AIB[j]+=adaug;
j+=(j&-j);
}
}
int PS(int j)
{
int sum=0;
while(j>0)
{
sum+=AIB[j];
j-=(j&-j);
}
return sum;
}
int main()
{
in >> n >> m;
int c;
for(int i=1;i<=n;i++)
{
in >> c;
update(i,c);
}
for(int i=1;i<=m;i++)
{
in >> op;
if(op==0)
{
in >> poz >> val;
update(poz,val);
}
else if(op==1)
{
in >> p1 >> p2;
out << PS(p2)-PS(p1-1) << '\n';
}
else
{
in >> a;
int k,ok;
k=1;
ok=0;
while(k<=n)
{
if(PS(k)==a)
{
out << k << '\n';
ok=1;
break;
}
k++;
}
if(ok==0)
out << "-1" << '\n';
}
}
return 0;
}