Pagini recente » Cod sursa (job #1351153) | Cod sursa (job #2917992) | Cod sursa (job #43983) | Cod sursa (job #774307) | Cod sursa (job #2645446)
#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;
}