Cod sursa(job #2331622)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 29 ianuarie 2019 19:09:17
Problema Sortare Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 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,A[n]);
        place(++nr,B[n]-1);
        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;
}