Cod sursa(job #3229528)

Utilizator Paunescu_Stefan_Vladfdsasdfdfs Paunescu_Stefan_Vlad Data 16 mai 2024 14:20:26
Problema Datorii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 15000
int n;
int v[MAXN+1];
int aib[MAXN+1];

int zeros(int x){
    return (x ^ (x-1)) & x;
}
int add(int x,int plus){
    int i;
    for(i=x;i<=n;i+=zeros(i)){
        aib[i]+=plus;
    }
}
int calcsum(int e){
    int i, sum=0;
    for(i=e;i>0;i-=zeros(i)){
        sum+=aib[i];
    }
    return sum;
}
int main()
{
    FILE *fin; FILE *fout;
    int m,i,c,va,t;

    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",&v[i]);
        add(i,v[i]);
    }
    for(i=1;i<=m;i++){
        fscanf(fin,"%d%d%d",&c,&va,&t);
        if(c==1){
            fprintf(fout,"%d\n",calcsum(t)-calcsum(va-1));
        }
        if(c==0){
            add(va,-t);
        }
    }
    fclose(fin);
    fclose(fout);

    return 0;
}