Cod sursa(job #2273302)

Utilizator LucianTLucian Trepteanu LucianT Data 31 octombrie 2018 12:25:04
Problema Sortare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;

const int maxN=5001;

int n;
int res,sol[maxN];

int a[maxN],b[maxN],c[maxN];

void placePos(int cnt,int val){
    int idx=1;
    while(cnt>0){
        if(sol[idx]==0)
            cnt--;
        idx++;
    }
    sol[idx-1]=val;
}

int main(){
    ifstream cin("sortare.in");
    ofstream cout("sortare.out");

    cin>>n;
    for(int i=2;i<=n;i++){
        cin>>a[i]>>b[i]>>c[i];

        if(a[i]>c[i])
            swap(a[i],c[i]);
        if(b[i]>c[i])
            swap(b[i],c[i]);
        if(a[i]>b[i])
            swap(a[i],b[i]);
    }

    int aux=n;
    while(n>1){
        res++;

        if(a[n]!=b[n] && b[n]!=c[n]){
            placePos(c[n],n);
            placePos(b[n],n-1);

            n-=2;
        } else {
            placePos(b[n],n);

            n--;
        }
    }

    if(n==1)
        placePos(1,1);

    cout<<res+1<<'\n';
    for(int i=1;i<=aux;i++)
        cout<<sol[i]<<" ";

    return 0;
}