Pagini recente » Cod sursa (job #1773151) | Cod sursa (job #2782314) | Cod sursa (job #192302) | Cod sursa (job #1790792) | Cod sursa (job #163635)
Cod sursa(job #163635)
#include <cstdio>
#define fin "sortare.in"
#define fout "sortare.out"
const int Nmax = 5010;
int N,v[Nmax],use[Nmax];
int a[Nmax],b[Nmax],c[Nmax];
void readdata()
{
int i;
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d",&N);
for ( i = 1; i <= N; ++i )
scanf("%d%d%d",&a[i],&b[i],&c[i]);
}
void solve()
{
int i,j,p;
int hmax = 0;
if ( N == 1 )
{
printf("1\n1\n");
return ;
}
if ( N == 2 )
{
printf("2\n1 2\n");
return ;
}
for ( i = N; i > 0; i-=2 )
{
hmax++;
p = 0;
for ( j = 1; j <= N; ++j )
if ( v[j] == 0 )
{
++p;
if ( p == a[i - 1] )
v[j] = N - i + 1;
if ( p == b[i - 1] )
v[j] = N - i + 2;
use[v[j]] = 1;
}
}
for ( i = 1; i <= N; ++i)
if ( v[i] == 0 )
for ( j = 1; j <= N; ++j )
if ( use[j] == 0 )
{
use[j]=1;
v[i]=j;
break;
}
printf("%d\n",hmax);
for ( i = 1; i <= N; ++i )
printf("%d ",v[i]);
printf("\n");
}
int main()
{
readdata();
solve();
return 0;
}