Cod sursa(job #2076405)

Utilizator dariusdariusMarian Darius dariusdarius Data 26 noiembrie 2017 15:43:41
Problema Sortare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <algorithm>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

const int MAX_N = 5005;

int a[MAX_N], b[MAX_N], c[MAX_N];
int p[MAX_N];

void PutKth(int k, int x) {
    int num = 0, index = 0;
    while (num < k) {
        index += 1;
        if (!p[index]) {
            ++ num;
        }
    }
    p[index] = x;
}

int main() {
    ifstream cin("sortare.in");
    ofstream cout("sortare.out");
    int n, cn;
    cin >> n; cn = n;
    for (int i = 2; i <= n; ++ i) {
        cin >> a[i] >> b[i] >> c[i];
    }
    while (n > 1) {
        if (a[n] == b[n] || a[n] == c[n]) {
            PutKth(a[n], n);
            n -= 1;
        } else if (b[n] == c[n]) {
            PutKth(b[n], n);
            n -= 1;
        } else {
            PutKth(max(a[n], b[n]), n);
            PutKth(min(a[n], b[n]), n - 1);
            n -= 2;
        }
    }
    if (n == 1) {
        PutKth(1, 1);
    }

    for (int i = 1; i <= cn; ++ i) {
        cout << p[i] << (i == cn ? "\n" : " ");
    }

    return 0;
}