Cod sursa(job #459780)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 31 mai 2010 10:23:47
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb

#include<cstdio>
#include<fstream>
#include<iostream>

using namespace std;

#define nn 20000

int v[nn];
int n,m,x;
int t,s,d;

void adauga (int p, int val)
{
for(;p<=n;p+=p^(p-1)&p)
v[p]+=val;
}

int quest (int p)
{
int S;
for(S=0;p;p-=p^(p-1)&p)
S+=v[p];
return S;
}

int main ()
{

ifstream in ("datorii.in");
//freopen ("datorii.out","w",stdout);

in>>n>>m;
for(int i=1;i<=n;++i){
in>>x;
adauga(i,x);
}
while(m){
in>>t>>s>>d;
switch(t){
case 0:adauga(s, -d );break;
case 1:printf("%d\n",(quest(d)-quest(s-1)));break;
}
--m;}
in.close();

return 0;}