Pagini recente » Cod sursa (job #3233934) | Cod sursa (job #2913251) | Cod sursa (job #1148164) | Cod sursa (job #274241) | Cod sursa (job #230961)
Cod sursa(job #230961)
#include <stdio.h>
#define FIN "tablete.in"
#define FOUT "tablete.out"
#define NMAX 1003
int N, K;
int A[NMAX][NMAX];
int Q[NMAX];
void solve()
{
int first = 0, last = -1;
int i, line = 0, pline = 0, j;
for( i = 1; i <= N * N; i++ ) {
if ( (i & 1) > 0 ) {
A[line][pline++] = i;
if ( pline == K - 1 ) {
Q[++last] = line;
line++;
pline = 0;
}
}
else {
if ( first <= last ) {
A[Q[first]][K-1] = i;
first++;
}
else {
A[line][pline++] = i;
if ( pline == K - 1 ) {
Q[++last] = line;
line++;
pline = 0;
}
}
}
if ( first == N ) break;
}
for( line = 0; line < N; line++ )
for( j = K; j < N; j++ )
A[line][j] = ++i;
}
int main()
{
FILE *fin = fopen( FIN, "r" );
FILE *fout = fopen( FOUT, "w" );
int i, j;
fscanf( fin, "%d%d", &N, &K );
solve();
for( i = 0; i < N; i++ ) {
for( j = 0; j < N; j++ )
fprintf( fout, "%d ", A[i][j] );
fprintf( fout, "\n" );
}
fclose( fin );
fclose( fout );
return 0;
}