Cod sursa(job #793064)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 1 octombrie 2012 21:31:56
Problema Reconst Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>

using namespace std;

int a,b,s,n,m,v[2010],sum[2010],ult[2010],i;

void recon(int a,int b,int s)
{
    if (ult[a]==0)
    {
        ult[a]=b;
        sum[a]=s;
        return;
    }
    if(ult[a]<b)
    {
        recon(ult[a]+1,b,s-sum[a]);
    }
    else
    {
        recon(b+1,ult[a],sum[a]-s);
        ult[a]=b;
        sum[a]=s;
    }
}

int main()
{
    freopen("reconst.in","r",stdin);
    freopen("reconst.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=m;i>=1;i--)
    {
        scanf("%d%d%d",&a,&b,&s);
        recon(a,b,s);
    }
    for (i=n;i>0;i--)
    {
        if (ult[i]!=0)
        {
            v[i]=sum[i]+v[ult[i]+1];
        }
        else v[i]=v[i+1];
    }
    for (i=1;i<n;i++)
    {
        printf("%d ",v[i]-v[i+1]);
    }
    printf("%d\n",v[n]);
    return 0;
}