Cod sursa(job #891141)

Utilizator silidragosSilion Dragos silidragos Data 25 februarie 2013 13:57:25
Problema Datorii Scor 0
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]=T[d]+val;
	d=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;
f.close();

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))<<endl;}

g.close();
return 0;}