Pagini recente » Cod sursa (job #2329378) | Cod sursa (job #1406338) | Cod sursa (job #3038297) | Cod sursa (job #2116623) | Cod sursa (job #3243461)
#include <bits/stdc++.h>
#define long long int
using namespace std;
int a[150005];
int v[150005];
int suma(int BITree[],int index)
{
int sum=0;
while(index>0)
{
sum+=BITree[index];
index-=index & (-index);
}
return sum;
}
void updateBIT(int BITree[],int n,int index,int val)
{
while(index<=n)
{
BITree[index]+=val;
index+=index & (-index);
}
}
signed main()
{
ifstream cin("aib.in");
ofstream cout("aib.out");
int n,m,k,x,b,c,d;
cin >> n >> m;
for(int z=1;z<=n;z++)
{
cin >> a[z];
updateBIT(v,n,z,a[z]);
}
for(int i=1;i<=m;i++)
{
int sum1=0,sum2=0;
cin >> b;
if(b==0)
{
cin >> c >> d;
updateBIT(v,n,c,d);
}
else if(b==1)
{
cin >> c >> d;
sum2=suma(v,d);
sum1=suma(v,c-1);
cout << sum2-sum1 << '\n';
}
else
{
cin >> c;
for(int j=1;j<=n;j++)
{
if(suma(v,j)==c)
{
cout << j << '\n';
break;
}
}
}
}
return 0;
}