Cod sursa(job #2385106)

Utilizator tudorceltareTudor Pitic tudorceltare Data 21 martie 2019 17:18:28
Problema Datorii Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

void operatie(FILE* pf, FILE* qf, int* a, int op)
{
    if(op == 0){
        int T, V;
        fscanf(pf,"%d%d", &T, &V);
        T--;
        a[T] = a[T] - V;
        assert(a[T]>=0);
    }
    else{ // op == 1
        int P, Q, sum = 0;
        fscanf(pf,"%d%d", &P, &Q);
        P--;
        for(int i=P; i<Q; i++)
            sum += a[i];
        fprintf(qf,"%d\n",sum);
    }
}

void asignare(FILE* pf, int N, int* a)
{
    for(int i=0; i<N; i++)
        fscanf(pf, "%d", &a[i]);
}

int main()
{
    int i=0, N, M, op;
    int *a;
    FILE* pf;
    FILE* qf;
    pf = fopen("datorii.in.txt", "r");
    qf = fopen("datorii.out.txt", "w");
    fscanf(pf,"%d%d", &N, &M);
    a = (int*)malloc(N*sizeof(int));
    asignare(pf, N, a);

    while (i<M){
        fscanf(pf,"%d", &op);
        operatie(pf, qf, a, op);
        i++;
    }
    fclose(pf);
    fclose(qf);

    return 0;
}