Cod sursa(job #2036370)

Utilizator RazvanGutaGuta Razvan Alexandru RazvanGuta Data 10 octombrie 2017 17:10:50
Problema Reconst Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("reconst.in");
ofstream g("reconst.out");
struct inter
{
    int st,dr,s;
}x[2005],r;
bool cmp(inter a,inter b)
{
    return a.dr<b.dr;
}
int a[2005],n,m,j,i;
long long spar[2005];
int main()
{
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>x[i].st>>x[i].dr>>x[i].s;
    }
    sort(x+1,x+1+m,cmp);
    for(i=1;i<=m;i++)
    {
        for(j=1;j<i;j++)
     {
            if(x[i].st==x[j].st&&x[i].dr<x[j].dr)
            {
                r=x[j];
                x[j]=x[i];
                x[i]=r;
            }
            if(x[i].st==x[j].st)
            {
                x[i].st=x[j].dr+1;
                x[i].s-=x[j].s;
            }
        }
    }
    sort(x+1,x+1+m,cmp);
    int poz=m;
    for(i=n;i>=1;i--)
    {
        while(poz&&(x[poz].st>x[poz].dr||x[poz].st>i))
        poz--;
        if(poz&&x[poz].st==i)
            a[i]=x[poz].s-spar[i+1]+spar[x[poz].dr+1];
        else
            a[i]=0;
        spar[i]=spar[i+1]+a[i];
    }
    for(i=1;i<=n;i++)
        g<<a[i]<<' ';
    return 0;
}