Cod sursa(job #1549972)

Utilizator herbertoHerbert Mohanu herberto Data 12 decembrie 2015 23:18:00
Problema Datorii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 15001

int v[MAXN];
int x, y, n;
int lsb(int x){
  return x^(x&(x-1));
}
void update(int x, int y){
  while(x<=n){
    v[x]+=y;
    x+=lsb(x);
  }
}
inline int querry(int x){
  int s;
  s=0;
  while(x>0){
    s+=v[x];
    x-=lsb(x);
  }
  return s;
}


int main(){
  FILE*fin=fopen("datorii.in", "r");
  FILE*fout=fopen("datorii.out", "w");
  int m, tip, p, i, nr;
  fscanf(fin, "%d%d", &n, &m);
  for(i=1; i<=n; i++){
    fscanf(fin, "%d", &nr);
    update(i, nr);
  }
  for(i=1; i<=m; i++){
    fscanf(fin, "%d%d%d", &tip, &x, &y);
    if(tip==0)
      update(x, -y);
    else
      fprintf(fout, "%d\n", querry(y)-querry(x-1));
  }

  return 0;
}