Pagini recente » Cod sursa (job #1030027) | Cod sursa (job #1886896)
#include <bits/stdc++.h>
using namespace std;
FILE *fin = fopen("tablete.in", "r"), *fout = fopen("tablete.out", "w");
#define MAX_N 1001
bool viz[MAX_N * MAX_N];
int N, K;
int v[MAX_N][MAX_N];
int ind = 1;
inline int next() {
while(viz[ind] == 1 && ind <= N * N)
ind++;
viz[ind] = 1;
return ind;
}
int main() {
fscanf(fin, "%d%d", &N, &K);
for(int j = 1;j < K;j++)
for(int i = 1;i <= N;i++)
v[i][j] = next();
if(N % 2 == 0 || K % 2 == 1) {
v[1][K] = (K - 1) * N + 1;
viz[(K - 1) * N + 1] = 1;
swap(v[1][K], v[N][K - 1]);
int curr = (K - 1) * N + 2;
for(int i = 2;i <= N;i++)
v[i][K] = curr, viz[curr] = 1, curr += 2;
}
else {
int curr = v[N][K - 1] + 1;
while(curr % 2 == 1)
curr++;
for(int i = 1;i <= N;i++)
v[i][K] = curr, viz[curr] = 1, curr += 2;
}
for(int j = K + 1;j <= N;j++)
for(int i = 1;i <= N;i++)
v[i][j] = next();
for(int i = 1;i <= N;i++) {
for(int j = 1;j <= N;j++)
fprintf(fout, "%d", v[i][j]), fputc(' ', fout);
fputc('\n', fout);
}
fclose(fin);
fclose(fout);
return 0;
}