Cod sursa(job #2037051)

Utilizator robx12lnLinca Robert robx12ln Data 11 octombrie 2017 17:27:16
Problema Sortare Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("sortare.in");
ofstream fout("sortare.out");
int v[5005][3], n, nr, sol[5005];
void move_dr( int p ){
    for( int i = n; i >= p; i-- )
        sol[i + 1] = sol[i];
}
void solve( int n ){
    nr++;
    if( n == 1 ){
        sol[1] = 1;
        return;
    }else{
        if( v[n][0] != v[n][1] && v[n][1] != v[n][2] ){
            solve( n - 2 );
            move_dr( v[n][0] );
            sol[ v[n][0] ] = n - 1;
            move_dr( v[n][1] );
            sol[ v[n][1] ] = n;
        }else{
            solve( n - 1 );
            move_dr( v[n][0] );
            sol[ v[n][0] ] = n;
        }
    }
}
int main(){
    fin >> n;
    for( int i = 2; i <= n; i++ ){
        fin >> v[i][0] >> v[i][1] >> v[i][2];
        sort( v[i], v[i] + 3 );
    }
    solve( n );
    fout << nr << "\n";
    for( int i = 1; i <= n; i++ ){
        fout << sol[i] << " ";
    }
    return 0;
}