Cod sursa(job #891166)

Utilizator silidragosSilion Dragos silidragos Data 25 februarie 2013 14:07:37
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<iostream>
#include<fstream>
using namespace std;
#define MAX 20000

int T[MAX];

void add(int d,int val)
{while(d<=MAX)
	{T[d] += val;
	d += (d&(-d));}}

int query(int d)
{int sum=0;
while(d>0)
{sum=sum+T[d];
d=d-(d&(-d));}
return sum;
}

int main()
{ifstream f("datorii.in",ios::in);
ofstream g("datorii.out",ios::out);

int N,M,i,k,l,m;

f>>N>>M;


for(i=1;i<=N;i++)
{f>>k;
add(i,k);}

for(i=1;i<=M;i++)
{f>>k>>l>>m;
if(k==0)
	add(l,-m);
else g<<(query(m)-query(l-1))<<'\n';}
f.close();
g.close();
return 0;}