Cod sursa(job #2338837)

Utilizator NeredesinI am not real Neredesin Data 7 februarie 2019 21:12:25
Problema Sortare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#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;
}