Cod sursa(job #197703)

Utilizator filipbFilip Cristian Buruiana filipb Data 5 iulie 2008 15:46:23
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <string.h>

int N, M, fin[2048], sum[2048];
long long S[2048];

void sparge(int l, int r, int s)
{
    if (l > r) return ;
    if (!fin[l])
    {
        fin[l] = r;
        sum[l] = s;
        return ;
    }

    if (fin[l] < r)
        sparge(fin[l]+1, r, s-sum[l]);
    else
    {
        sparge(r+1, fin[l], sum[l]-s);
        fin[l] = r;
        sum[l] = s;
    }
}

int main(void)
{
    int i, j, k;
    
    freopen("reconst.in", "r", stdin);
    freopen("reconst.out", "w", stdout);

    scanf("%d %d", &N, &M);
    for (; M; --M)
    {
        scanf("%d %d %d", &i, &j, &k);
        sparge(i, j, k);
    }

    for (i = N; i; --i)
        if (fin[i])
            S[i] = sum[i]+S[fin[i]+1];
        else
            S[i] = S[i+1];

    for (i = 1; i <= N; ++i)
        printf("%d ", (int)(S[i]-S[i+1]));
    printf("\n");
        
    return 0;
}