Cod sursa(job #2631946)

Utilizator doyouhavethetimeStanculescu Gabriel doyouhavethetime Data 1 iulie 2020 16:45:45
Problema Datorii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define N 15000

int n, aib[N+1];
void update (int i, int x) {
    for (; i<=n; i+=i&(-i))
        aib[i]+=x;
}

int query (int i) {
    int ans=0;
    for (; i; i-=i&(-i))
        ans+=aib[i];
    return ans;
}

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

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

    for (; m; --m) {
        fscanf(fin, "%d%d%d", &i, &x, &y);
        if (i)
            fprintf(fout, "%d\n", query(y)-query(x-1));
        else
            update(x, -y);
    }
    return 0;
}