Cod sursa(job #1750589)

Utilizator Athena99Anghel Anca Athena99 Data 30 august 2016 15:49:30
Problema Sortare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

using namespace std;

ifstream fin("sortare.in");
ofstream fout("sortare.out");

const int nmax= 5000;

int a[nmax+1], b[nmax+1], c[nmax+1], x[nmax+1];

void f( int n, int t, int z ) {
    for ( int i= 1; i<=n && t>0; ++i ) {
        if ( x[i]==0 ) {
            --t;
            if ( t==0 ) {
                x[i]= z;
            }
        }
    }
}

int main(  ) {
    int n, sol= 0;
    fin>>n;
    a[n]= 1, b[n]= 1, c[n]= 1;
    for ( int i= n-1; i>=1; --i ) {
        fin>>a[i]>>b[i]>>c[i];
    }

    for ( int i= 1; i<=n; ++i ) {
        if ( a[i]!=b[i] && a[i]!=c[i] && b[i]!=c[i] ) {
            int aux= b[i];
            if ( a[i]<b[i] ) {
                --aux;
            }
            f(n, a[i], n-i);
            f(n, aux, n-i+1);
            ++i;
        } else if ( b[i]==c[i] ) {
            f(n, b[i], n-i+1);
        } else {
            f(n, a[i], n-i+1);
        }
        ++sol;
    }

    fout<<sol<<"\n";
    for ( int i= 1; i<=n; ++i ) {
        fout<<x[i]<<" ";
    }
    fout<<"\n";

    return 0;
}