Pagini recente » Cod sursa (job #2105359) | Cod sursa (job #2476224) | Cod sursa (job #2226870) | Cod sursa (job #1302042) | Cod sursa (job #2062153)
#include <fstream>
#include<algorithm>
#define NMAX 5005
using namespace std;
int nr[NMAX][3],v[NMAX]= {},n,NrPasi=0;
ifstream f("sortare.in");
ofstream g("sortare.out");
void solutie(int Dr)
{
int Lungime=Dr,i;
int a=nr[Lungime][0],b=nr[Lungime][1],c=nr[Lungime][2];
if(Lungime==0) return;
if(Lungime==1)
{
v[1]=1;
return;
}
NrPasi++;
if(a==b || b==c)
{
solutie(Dr-1);
for(i=Dr;i>=b;--i) v[i]=v[i-1];
v[b]=Dr;
}
else
{
solutie(Dr-2);
for(i=Dr;i>=b;--i) v[i]=v[i-1];
v[b]=Dr-1;
for(i=Dr;i>=c;--i) v[i]=v[i-1];
v[c]=Dr;
}
}
int main()
{
f>>n;
int i;
for(i=2; i<=n; ++i) {f>>nr[i][0]>>nr[i][1]>>nr[i][2];sort(nr[i],nr[i]+3);}
solutie(n);
g<<NrPasi+1<<'\n';
for(i=1; i<=n; ++i) g<<v[i]<<' ';
return 0;
}