Cod sursa(job #2221630)

Utilizator vlavricVictor Lavric vlavric Data 15 iulie 2018 09:57:46
Problema Datorii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>

FILE *g;

void    readfrom(int *n, int *m, int *a, int b[100000][4])
{
    FILE *f; int i, j;

    f = fopen("datorii.in", "r");
    fscanf(f, "%d %d", n, m);
    for (i = 1; i <= *n; i++)
        fscanf(f, "%d", &a[i]);
    for (i = 1; i <= *m; i++)
        for (j = 1; j <= 3; j++)
            fscanf(f, "%d", &b[i][j]);
    fclose(f);
}

void    first(int n, int l, int *a)
{
    a[n] -= l;
    if (a[n] < 0) a[n] = 0;
}

void    second(int n, int m, int *a, int st, int r, int *c)
{
    int i, j;

    for (i = st; i <= r; i++)
        c[i] = 0;
    c[st] = a[st];
    for (i = st + 1; i <= r; i++)
    {
        c[i] = c[i - 1] + a[i];
    }
    fprintf(g, "%d\n", c[r]);
}

int main(void)
{
    int a[15002], c[35002], b[100002][4]; int i, n, m;

    readfrom(&n, &m, a, b);
    g = fopen("datorii.out", "w");
    for (i = 1; i <= m; i++)
    {
        if (b[i][1] == 0) first(b[i][2], b[i][3], a); else second(n, m, a, b[i][2], b[i][3], c);
    }
    fclose(g);
    return (0);
}