Cod sursa(job #3367042)

Utilizator Rradu_v2Catana Radu Rradu_v2 Data 6 octombrie 2026 08:46:04
Problema Datorii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>

#define MAXN 15001

int aib[MAXN];

void update(int pos, int val) {
    if(pos<MAXN) {
        int b = pos&(-pos);
        aib[pos] += val;
        update(pos+b, val);
    }
}

int sum(int pos) {
    if(pos<1)
        return 0;
    int b = pos&(-pos);
    return aib[pos]+sum(pos-b);
}

int main()
{
    FILE *fin = fopen("datorii.in", "r");
    FILE *fout = fopen("datorii.out", "w");

    int n, m;
    fscanf(fin, "%d%d", &n, &m);

    for(int i=1; i<=n; i++) {
        int a;
        fscanf(fin, "%d", &a);
        update(i, a);
    }

    for(int i=0; i<m; i++) {
        int c;
        fscanf(fin, "%d", &c);
        if(c==0) {
            int pos, val;
            fscanf(fin, "%d%d", &pos, &val);
            update(pos, -val);
        }
        else if(c==1) {
            int a, b;
            fscanf(fin, "%d%d", &a, &b);
            fprintf(fout, "%d\n", sum(b)-sum(a-1));
        }
    }

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