Cod sursa(job #2335237)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 3 februarie 2019 19:52:46
Problema Reconst Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream fi("reconst.in");
ofstream fo("reconst.out");
typedef struct inter{int x,y,s;} INTER;
INTER A[2005];
int n,m,i,j,p,Rez[2005],sum;
vector<int> St[2005];
vector<int>::iterator it;

bool cmp(int a, int b)
{
    return A[a].y<A[b].y;
}

int main()
{
    fi>>n>>m;
    for(i=1; i<=m; i++)
    {
        fi>>A[i].x>>A[i].y>>A[i].s;
        St[A[i].x].push_back(i);
    }
    for(i=1; i<=n; i++)
    {
        if(St[i].size()>1)
        {
            sort(St[i].begin(),St[i].end(),cmp);
            p=*St[i].begin();
            it=St[i].begin();
            for(it++; it!=St[i].end(); it++)
            {
                if(A[p].y!=A[*it].y)
                {
                    A[*it].x=A[p].y+1;
                    A[*it].s-=A[p].s;
                    St[A[p].y+1].push_back(*it);
                }
            }
            while(St[i].size()>1)
                St[i].pop_back();
        }
    }
    for(i=n; i>=1; i--)
        if(St[i].size())
        {
            sum=0;
            for(j=A[*St[i].begin()].x+1; j<=A[*St[i].begin()].y; j++)
                sum+=Rez[j];
            Rez[i]=A[*St[i].begin()].s-sum;
        }
    for(i=1; i<=n; i++)
        fo<<Rez[i]<<" ";
    fo<<"\n";
    fi.close();
    fo.close();
    return 0;
}