Cod sursa(job #2718910)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 9 martie 2021 12:45:42
Problema Sortare Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

#define NMAX 5005
using namespace std;

ifstream fin("sortare.in");
ofstream fout("sortare.out");

int a[NMAX], b[NMAX], c[NMAX], rez[NMAX], vec[NMAX], n;

void solve(int st, int dr, int &adanci){
    int lg = dr - st + 1;
    if(lg <= 0)
        return;
    adanci++;
    if(lg == 1)
        return;
    int nr = 0;
    for(int i = 1; i <= n; ++i)
        if(rez[i] == 0)
            vec[++nr] = i;
    int x = vec[a[lg]], y = vec[b[lg]], z = vec[c[lg]];
    rez[x] = lg;
    if(x == y || x == z)
        solve(st, dr - 1, adanci);
    else {
        if(x != y)
            rez[y] = lg - 1;
        else if(x != z)
            rez[z] = lg - 1;
        solve(st, dr - 2, adanci);
    }
}

int main()
{
    fin >> n;

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

    int high = 0;
    solve(1, n, high);

    fout << high << '\n';
    for(int i = 1; i <= n; ++i)
        if(rez[i] == 0)
            fout << 1 << ' ';
        else fout << rez[i] << ' ';
    return 0;
}