Pagini recente » Cod sursa (job #666310) | Cod sursa (job #3165820) | Cod sursa (job #601231) | Cod sursa (job #278793) | Cod sursa (job #113125)
Cod sursa(job #113125)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int a,b,c,i,n,m,A[16000]={0},B[16000]={0};
void adauga(int x,int cat)
{ while(x<=n)
{ A[x]+=cat; x+=x^(x&(x-1));}
}
int extrage(int x)
{ int rezultat=0;
while(x>0)
{ rezultat+=A[x],x-=x^(x&(x-1));}
return rezultat;
}
int main()
{ fin>>n>>m;for(i=1;i<=n;fin>>B[i],B[i]+=B[i-1],i++);
for(i=1;i<=m;i++)
{ fin>>a>>b>>c;
if(!a) adauga(b,c);else
fout<<B[c]-B[b-1]-(extrage(c)-extrage(b-1))<<endl;
if(i==10000) A[10000000]=10;
}
fin.close();fout.close();
return 0;
}