Cod sursa(job #335637)

Utilizator Cata99Putan Catalin Cata99 Data 30 iulie 2009 19:10:08
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>x
#define NMAX 15003
int n,m,i,cod,x,y;
int s[NMAX];
int nz(int val) {
  int k=0;
  while(val%2==0) {
    k++;
    val>>=1;
  }
  return k;
}
void add(int poz,int val) {
  while(poz<=n) {
    s[poz]+=val;
    poz+=1<<nz(poz);
  }
}
int sum(int poz) {
  int suma=0;
  while(poz) {
    suma+=s[poz];
    poz-=1<<nz(poz);
  }
  return suma;
}
int main() {
  freopen("datorii.in","r",stdin);
  freopen("datorii.out","w",stdout);
  scanf("%d %d",&n,&m);
  for(i=1;i<=n;i++) {
    scanf("%d",&x);
    add(i,x);
  }
  while(m--) {
    scanf("%d %d %d",&cod,&x,&y);
    if(cod) printf("%d\n",sum(y)-sum(x-1));
    else add(x,-y);
  }
  return 0;   
}