Pagini recente » Cod sursa (job #2782092) | Istoria paginii utilizator/djok | Cod sursa (job #493846) | Cod sursa (job #510156) | Cod sursa (job #2273302)
#include <fstream>
using namespace std;
const int maxN=5001;
int n;
int res,sol[maxN];
int a[maxN],b[maxN],c[maxN];
void placePos(int cnt,int val){
int idx=1;
while(cnt>0){
if(sol[idx]==0)
cnt--;
idx++;
}
sol[idx-1]=val;
}
int main(){
ifstream cin("sortare.in");
ofstream cout("sortare.out");
cin>>n;
for(int i=2;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
if(a[i]>c[i])
swap(a[i],c[i]);
if(b[i]>c[i])
swap(b[i],c[i]);
if(a[i]>b[i])
swap(a[i],b[i]);
}
int aux=n;
while(n>1){
res++;
if(a[n]!=b[n] && b[n]!=c[n]){
placePos(c[n],n);
placePos(b[n],n-1);
n-=2;
} else {
placePos(b[n],n);
n--;
}
}
if(n==1)
placePos(1,1);
cout<<res+1<<'\n';
for(int i=1;i<=aux;i++)
cout<<sol[i]<<" ";
return 0;
}