Cod sursa(job #1971830)

Utilizator refugiatBoni Daniel Stefan refugiat Data 21 aprilie 2017 08:11:41
Problema Reconst Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("reconst.in");
ofstream so("reconst.out");
int v[2005];
int s[2005];
int e[2005],sum[2005];
int main()
{
    int n,m;
    si>>n>>m;
    int poz=0,st,r,dr,nec;
    for(int i=1;i<=m;++i)
    {
        si>>st>>dr>>nec;
        //cout<<st<<' '<<dr<<' '<<nec<<"->";
        while(e[st])
        {
            if(dr<e[st])
            {
                r=dr;
                dr=e[st];
                e[st]=dr;
                r=nec;
                nec=sum[st];
                sum[st]=r;
            }
            else
                if(dr==e[st])
                    break;
            nec-=sum[st];
            st=e[st]+1;

        }
        //cout<<st<<' '<<dr<<' '<<nec<<'\n';
        if(e[st]==dr)
            --poz;
        else
        {
            e[st]=dr;
            sum[st]=nec;
        }
    }
    for(int i=n;i;--i)
    {
        if(e[i])
        {
            v[i]=sum[i]-s[i+1]+s[e[i]+1];
        }
        else
            v[i]=0;
        s[i]=s[i+1]+v[i];
    }
    for(int i=1;i<=n;++i)
        so<<v[i]<<' ';
    return 0;
}