Pagini recente » Monitorul de evaluare | Hero's Call: Northrend! | Cod sursa (job #2841749) | Kinder | Cod sursa (job #2843614)
#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;
}