Pagini recente » Cod sursa (job #585436) | Cod sursa (job #2155262) | Cod sursa (job #1675645) | Cod sursa (job #2681176) | Cod sursa (job #432034)
Cod sursa(job #432034)
#include<fstream>
#define maxn 15001
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m;
int c[maxn];
void introducere(int ind,int val)
{ int poz=0;
while(ind<=n)
{ c[ind]+=val;
while(!(ind &(1<<poz)))
poz++;
ind+=(1<<poz);
poz++;
}
}
void modifica(int ind,int val)
{ int poz=0;
while(ind<=n)
{ c[ind]-=val;
while(!(ind &(1<<poz)))
poz++;
ind+=(1<<poz);
poz++;
}
}
int suma(int ind)
{ int s=0,poz=0;
while(ind>0)
{ s+=c[ind];
while(!(ind&(1<<poz)))
poz++;
ind-=(1<<poz);
poz++;
}
return s;
}
int main()
{ int i,x,y,k;
fin>>n>>m;
for(i=1;i<=n;i++)
{ fin>>x;
introducere(i,x);
}
for(i=1;i<=m;i++)
{ fin>>k>>x>>y;
if(k==0) modifica(x,y);
else fout<<suma(y)-suma(x-1)<<"\n";
}
fin.close();
fout.close();
return 0;
}