Pagini recente » Cod sursa (job #1179238) | Cod sursa (job #1588628) | Cod sursa (job #2272137) | Cod sursa (job #1554559) | Cod sursa (job #1733386)
#include <iostream>
#include <fstream>
#include <cmath>
#define zeros(x)((x^(x-1))&x)
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,v1[1000000],AIB[1000000],tip,a,b;
void Add(int x, int quantity)
{
int i;
for (i = x; i <= n; i += zeros(i))
AIB[i] += quantity;
}
int Compute(int x)
{
int i, ret = 0;
for (i = x; i > 0; i -= zeros(i))
ret += AIB[i];
return ret;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>v1[i];
for(int i=1;i<=n;i++)
for(int j=i-zeros(i)+1; j<=i; j++)
AIB[i]+=v1[j];
for(int i=1;i<=m;i++){
fin>>tip;
if(tip==1){
fin>>a>>b;
fout<<Compute(b)-Compute(a-1)<<'\n';
}
else {
fin>>a>>b;
Add(a,-b);
}
}
return 0;
}