Pagini recente » Cod sursa (job #1824069) | Cod sursa (job #2820100) | Cod sursa (job #2006951) | Cod sursa (job #2017709) | Cod sursa (job #3215746)
#include <bits/stdc++.h>
using namespace std;
ifstream in("aib.in");
ofstream out("aib.out");
int n,m,a[100000],t[100000],i,j,l,k,x,y,z;
void tree(int k)
{
int i,p=k&-k;
for(i=1;i<=p;i++)
t[k]+=a[(k-p+i)];
}
void suma(int k,int x)
{
while(k<=n){
t[k]+=x;
k+=(k&-k);
}
}
int sum(int k)
{
int s=0;
while(k>=1){
s+=t[k];
k-=(k&-k);
}
return s;
}
int main()
{
in>>n>>m;
for(i=1;i<=n;i++){
in>>a[i];
if(i%2==1)
t[i]=a[i];
else
tree(i);
}
for(j=1;j<=m;j++){
in>>x;
if(x==0){
in>>y>>z;
suma(y,z);
}
else if(x==1){
in>>y>>z;
int s1=sum(y-1),s2=sum(z);
out<<s2-s1<<endl;
}
else if(x==2){
in>>y;
int q=-1;
for(i=1;i<=n;i++)
if(t[i]==y){
q=i;
break;
}
out<<q<<endl;
}
}
}