Cod sursa(job #1261288)

Utilizator GhiciCineRazvan Dumitriu GhiciCine Data 12 noiembrie 2014 10:36:10
Problema Datorii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

int aib[15001];
int n;

void update(int poz,int valoare){
  for(;poz<=n;poz+=poz&(poz-1)^poz){
    aib[poz]+=valoare;
  }
}
int query(int poz){
  int s;
  s=0;
  for(;poz;poz-=poz&(poz-1)^poz){
    s+=aib[poz];
  }
  return s;
}
int main(){
  FILE *f1,*f2;
  int m,i,d,a,b,op;

  f1=fopen("datorii.in","r");
  f2=fopen("datorii.out","w");

  fscanf(f1,"%d%d",&n,&m);
  for(i=1;i<=n;i++){
    fscanf(f1,"%d",&d);
    update(i,d);
  }
  for(i=1;i<=m;i++){
    fscanf(f1,"%d%d%d",&op,&a,&b);
    if(op==0){
      update(a,-b);
    }
    else{
      fprintf(f2,"%d\n",query(b)-query(a-1));
    }
  }
  fclose(f1);
  fclose(f2);
  return 0;
}