Pagini recente » Borderou de evaluare (job #3164537) | Cod sursa (job #2739478)
#include <iostream>
#include <fstream>
using namespace std;
ifstream be("datorii.in");
ofstream ki("datorii.out");
int getSum(int bitr[],int idx)
{
int s=0;
while(idx>0)
{
s+=bitr[idx];
idx-=idx&(-idx);
}
return s;
}
void update(int bitr[],int x,int val,int n)
{
int idx=x;
while(idx<=n)
{
bitr[idx]+=val;
idx=idx+(idx&(-idx));
}
}
int main()
{
int n,m;
be>>n>>m;
int bitr[n+1]={0};
for(int i=1;i<=n;i++)
{
int x;
be>>x;
update(bitr,i,x,n);
}
for(int i=0;i<m;i++)
{
int j,x,y;
be>>j>>x>>y;
if(j==0)
update(bitr,x,-y,n);
else
ki<< 1LL *(getSum(bitr,y)-getSum(bitr,x-1))<<endl;
}
return 0;
}