Cod sursa(job #2645446)

Utilizator betybety bety bety Data 28 august 2020 12:27:10
Problema Sortare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb

#include<fstream>

using namespace std;

ifstream fi("sortare.in");

ofstream fo("sortare.out");

int n,nr,i,A[5005],B[5005],C[5005],rez,Rez[5005];



void place(int x, int poz)

{

    int ind=0;

    while(poz)

    {

        if(Rez[ind+1]==0)

            poz--;

        ind++;

    }

    Rez[ind]=x;

}



void solve(int n)

{

    if(n==0)

        return;

    rez++;

    if(n==1)

    {

        place(++nr,1);

        return;

    }

    if(A[n]==B[n] || A[n]==C[n] || B[n]==C[n])

    {

        if(A[n]==B[n] || A[n]==C[n])

            place(++nr,A[n]);

        else

            place(++nr,B[n]);

        solve(n-1);

    }

    else

    {

        place(++nr,max(A[n],B[n]));

        place(++nr,min(B[n],A[n]));

        solve(n-2);

    }

}



int main()

{

    fi>>n;

    for(i=2; i<=n; i++)

        fi>>A[i]>>B[i]>>C[i];

    solve(n);

    fo<<rez<<"\n";

    for(i=1; i<=n; i++)

        fo<<Rez[i]<<" ";

    fo<<"\n";

    fi.close();

    fo.close();

    return 0;

}