Cod sursa(job #210724)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 28 septembrie 2008 19:52:34
Problema Sortare Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
const int NMAX=5001;
int N,h,A[NMAX],B[NMAX],C[NMAX],x[NMAX];
void read(){
     scanf("%d",&N);
     for (int i=2;i<=N;++i) scanf("%d %d %d",&A[i],&B[i],&C[i]);
     }
void write(){
     printf("%d\n",h);
     for (int i=1;i<=N;++i) printf("%d ",x[i]);
     }
void solve(int n){
     int i;
     ++h;     
     if (n==1) {x[1]=1;return;}
     if (A[n]!=B[n] && B[n]!=C[n] && C[n]!=A[n]){
       solve(n-2);
       for (i=n-1;i>B[n];i--) x[i]=x[i-1];
       x[B[n]]=n-1;
       for (i=n;i>C[n];i--) x[i]=x[i-1];
       x[C[n]]=n;
       }
     else{
       solve(n-1);
       for (i=n;i>C[n];i--) x[i]=x[i-1];
       x[C[n]]=n;}
     }     
int main(){
    freopen("sortare.in","r",stdin);
    freopen("sortare.out","w",stdout);
    read();
    solve(N);
    write();
    return 0;
}