Cod sursa(job #2843614)

Utilizator AndreiBOTOBotocan Andrei AndreiBOTO Data 2 februarie 2022 18:24:39
Problema Sortare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include<fstream>
#include <algorithm>

using namespace std;

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

const int NMAX=5005;
int A[NMAX],B[NMAX],C[NMAX];
int n,nr,i,j,kon;
int X[NMAX];

void perm(int x, int poz)
{
    int ind=0;
    while(poz)
    {
        if(X[ind+1]==0)
            poz--;
        ind++;
    }
    X[ind]=x;
}

void qsort(int n)
{
    if(n==0)
        return;
    kon++;
    if(n==1)
    {
        perm(++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])
            perm(++nr,A[n]);
        else
            perm(++nr,B[n]);
        qsort(n-1);
    }
    else
    {
        perm(++nr,max(A[n],B[n]));
        perm(++nr,min(B[n],A[n]));
        qsort(n-2);
    }
}

int main()
{
    fin>>n;
    for(i=2;i<=n;i++)
        fin>>A[i]>>B[i]>>C[i];
    qsort(n);
    fout<<kon<<"\n";
    for(i=1;i<=n;i++)
        fout<<X[i]<<" ";
    fout<<"\n";
    return 0;
}