Follows 10094.c (Total 86 lines):
/* @JUDGE_ID:4461XX 10094 C */
/* A */
#include<stdio.h>
#define N 1000
int map[N+1][N+1] , n ;
void initial( void )
{
int i , j ;
for( i=1 ; i<=n ; i++ )
for( j=1 ; j<=n ; j++ ) map[i][j] = 0 ;
}
void print( void )
{
int i , j ;
for( j=1 ; j<=n ; j++ )
for( i=1 ; i<=n ; i++ )
if( map[i][j] ){
printf( "%d " , i ) ;
break ;
}
putchar( '\n' ) ;
}
void class_1( void )
{
int i ;
for( i=1 ; i<=n/2 ; i++ )
map[2*i][i] = map[2*i-1][n/2+i] = 1 ;
}
void class_2( void )
{
int i ;
for( i=1 ; i<=(n-1)/2 ; i++ )
map[2*i][i] = 1 ;
for( i=1 ; i<=(n+1)/2 ; i++ )
map[2*i-1][(n-1)/2+i] = 1 ;
}
void class_3( void )
{
int i ;
map[1][n-1] = map[2][(n-1)/2] = map[3][n] = 1 ;
for( i=1 ; i<=(n-3)/2 ; i++ )
map[2*i+2][i] = map[2*i+3][(n-1)/2+i] = 1 ;
}
void class_4( void )
{
int i ;
if( n>8 ){
map[2][n] = map[4][1] = map[6][n-1] = 1 ;
for( i=1 ; i<=3 ; i++ )
map[2*i-1][n/2-2+i] = 1 ;
for( i=1 ; i<=n/2-3 ; i++ )
map[2*i+5][i+1] = map[2*i+6][n/2+1+i] = 1 ;
}
else{
for( i=1 ; i<=4 ; i++ )
map[2*i][i] = 1 ;
map[1][6] = map[3][5] = map[5][8] = map[7][7] = 1 ;
}
}
void main( void )
{
int i ;
while( scanf( "%d" , &n ) == 1 ){
if( n<4 ){
puts( "Impossible" ) ;
continue ;
}
initial() ;
switch( n%6 ){
case 0 :
case 4 : class_1() ;
break ;
case 1 :
case 5 : class_2() ;
break ;
case 3 : class_3() ;
break ;
case 2 : class_4() ;
break ;
}
print() ;
}
}
/* @END_OF_SOURCE_CODE */
Back to statistics
Ya-Lin Huang (C)
huangyl@gmail.com