Cod sursa(job #2064662)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 12 noiembrie 2017 17:39:41
Problema Sortare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

#define MAXN 5000

int a[MAXN + 1], b[MAXN + 1], c[MAXN + 1], v[MAXN + 1], n;

inline void pune(int x) {
    int y = 0;
    while (x) x -= (v[++y] == 0);
    v[y] = n;
    n--;
}

int main() {
    int N;
    fin >> N;
    n = N;

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

    int ans = 1;
    while (n > 1) {
        ans++;
        if (a[n] == b[n] || b[n] == c[n] || c[n] == a[n]) {
            if (a[n] == b[n]) pune(a[n]);
            else pune(c[n]);
        }else {
            pune(max(b[n], c[n]));
            pune(min(b[n + 1], c[n + 1]));
        }
    }
    if (n == 1)
        pune(1);

    fout << ans << '\n';
    for (int i = 1; i <= N; i++)
        fout << v[i] << ' ';

    return 0;
}