Pagini recente » Clasament simulareoni11-12-round2 | Cod sursa (job #465079) | Cod sursa (job #1127914) | Cod sursa (job #2235344) | Cod sursa (job #1750589)
#include <fstream>
using namespace std;
ifstream fin("sortare.in");
ofstream fout("sortare.out");
const int nmax= 5000;
int a[nmax+1], b[nmax+1], c[nmax+1], x[nmax+1];
void f( int n, int t, int z ) {
for ( int i= 1; i<=n && t>0; ++i ) {
if ( x[i]==0 ) {
--t;
if ( t==0 ) {
x[i]= z;
}
}
}
}
int main( ) {
int n, sol= 0;
fin>>n;
a[n]= 1, b[n]= 1, c[n]= 1;
for ( int i= n-1; i>=1; --i ) {
fin>>a[i]>>b[i]>>c[i];
}
for ( int i= 1; i<=n; ++i ) {
if ( a[i]!=b[i] && a[i]!=c[i] && b[i]!=c[i] ) {
int aux= b[i];
if ( a[i]<b[i] ) {
--aux;
}
f(n, a[i], n-i);
f(n, aux, n-i+1);
++i;
} else if ( b[i]==c[i] ) {
f(n, b[i], n-i+1);
} else {
f(n, a[i], n-i+1);
}
++sol;
}
fout<<sol<<"\n";
for ( int i= 1; i<=n; ++i ) {
fout<<x[i]<<" ";
}
fout<<"\n";
return 0;
}