Pagini recente » Cod sursa (job #703333) | Cod sursa (job #3286010) | Cod sursa (job #1788534) | Cod sursa (job #3173938) | Cod sursa (job #2338837)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("sortare.in");
ofstream out("sortare.out");
const int NMAX = 5 * 1e3;
int n;
int cnt;
int a[1 + NMAX];
int b[1 + NMAX];
int c[1 + NMAX];
int output[1 + NMAX];
void solve(int x, int y) {
for(int i = 1; i <= n; i++) {
if(output[i] == 0) {
x--;
if(x == 0) {
output[i] = y;
return;
}
}
}
}
int main()
{
in >> n;
a[1] = 1;
b[1] = 1;
c[1] = 1;
for(int i = 2; i <= n; i++) {
in >> a[i] >> b[i] >> c[i];
}
for(int i = n; i >= 1; i--) {
if(a[i] != b[i] && b[i] != c[i] && c[i] != a[i]) {
solve(a[i], i - 1);
solve(b[i] - (a[i] < b[i]), i);
i--;
} else {
if(b[i]==c[i])
solve(b[i], i);
else
solve(a[i],i);
}
cnt++;
}
out << cnt << '\n';
for(int i = 1; i <= n; i++) {
out << output[i] << ' ';
}
in.close();
out.close();
return 0;
}