Pagini recente » Cod sursa (job #1835849) | Cod sursa (job #1816868) | Cod sursa (job #1302767) | Cod sursa (job #392431) | Cod sursa (job #870549)
Cod sursa(job #870549)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("tablete.in");
ofstream out ("tablete.out");
int M[1010][1010];
int main()
{
int N, K, i, j, now = 0;
in >> N >> K;
if (!((N | K) & 1)){
for (i = 1; i <= N; i ++, out << "\n")
for (j = 1; j <= N; j ++)
out << ++ now << " ";
return 0;
}
if (!(N & 1) && (K & 1)){
for (i = 1; i <= N; i ++)
for (j = 1; j <= K; j ++)
M[i][j] = ++ now;
for (i = 1; i <= N; i += 2)
swap (M[i][N - 1], M[i + 1][1]);
for (i = 1; i <= N; i ++, out << "\n")
for (j = 1; j <= N; j ++)
if (M[i][j])
out << M[i][j] << " ";
else
out << ++ now << " ";
return 0;
}
if ((N & 1) && !(K & 1)){
for (i = 1; i <= N; i ++)
for (j = 1; j <= N; j ++)
M[i][j] = ++ now;
if (K == 2){
for (i = 2; i <= N; i += 2){
swap (M[i][2], M[i - 1][N]);
swap (M[i][1], M[i][2]);
}
}
else{
for (i = 2; i <= N; i += 2){
swap (M[i][K], M[i - 1][N]);
swap (M[i][1], M[i][K]);
swap (M[i][K], M[i][K - 1]);
swap (M[i][K - 1], M[i][K - 2]);
}
}
for (i = 1; i <= N; i ++, out << "\n")
for (j = 1; j <= N; j ++)
out << M[i][j] << " ";
return 0;
}
M[1][K] = K + 1;
for (i = 1; i <= N; i ++){
if (i == K){
now += 2;
continue;
}
M[1][i] = ++ now;
}
M[2][1] = K;
for (i = 2; i <= N; i ++)
M[2][i] = i + N;
for (i = 3; i < N; i ++)
for (j = 1; j <= N; j ++)
M[i][j] = M[i - 2][j] + (2 * N);
now = M[N - 1][N];
for (i = 1; i <= N; i ++)
M[N][i] = (now ++);
swap (M[N - 1][N], M[N][K + 1]);
for (i = K + 1; i < N; i ++)
M[N][i] = M[N][i + 1];
M[N][N] = N * N;
for (i = 1; i <= N; i ++, out << "\n")
for (j = 1; j <= N; j ++)
out << M[i][j] << " ";
return 0;
}