Cod sursa(job #3041074)

Utilizator mmocanuMocanu Mihai-Adrian mmocanu Data 30 martie 2023 21:54:28
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <queue>
#include <vector>
#include <stack>
#define MAXN 15003
#define INFI 1000000
///Problma Datori de pe Infoarena
using namespace std;

int aib[MAXN];
int sir[MAXN];

int Zeros(int x){
  return ((x^(x-1))&x);
}

void Add(int x,int val,int n){
  int i;
  for(i=x;i<=n;i+=Zeros(i)){
    aib[i]+=val;
  }
}

int Answear(int x){
  int i,r;

  r=0;
  for(i=x;i>0;i-=Zeros(i)){
    r+=aib[i];
  }

  return r;
}


int main(){
  int n,m,z,i,t,x,y;
  FILE *fin,*fout;
  fin=fopen("datorii.in","r");
  fout=fopen("datorii.out","w");
  fscanf(fin,"%d%d",&n,&m);

  for(i=1;i<=n;i++){
    fscanf(fin,"%d",&sir[i]);
    Add(i,sir[i],n);
  }

  for(z=0;z<m;z++){
    fscanf(fin,"%d%d%d",&t,&x,&y);
    if(t==0){
      Add(x,-y,n);
    }else{
      fprintf(fout,"%d\n",Answear(y)-Answear(x-1));
    }
  }

  fclose(fin);
  fclose(fout);
  return 0;
}