Pagini recente » Cod sursa (job #1258059) | Cod sursa (job #460288) | Cod sursa (job #934803) | Cod sursa (job #289131) | Cod sursa (job #1676221)
#include <bits/stdc++.h>
#define maxN 1002
using namespace std;
int n, k, a[maxN][maxN];
bool w[maxN * maxN];
void read()
{
freopen("tablete.in", "r", stdin);
scanf("%d %d", &n, &k);
}
void solve()
{
int i, j, val = 0;
if (k % 2 == 0)
{
val = 0;
for (i = 1; i <= n; ++ i)
for (j = 1; j <= k; ++ j)
a[i][j] = ++ val;
for (i = 1; i <= n; ++ i)
for (j = k + 1; j <= n; ++ j)
a[i][j] = ++ val;
}else
{
if (n % 2 == 0)
{
val = 0;
for (i = 1; i <= n; ++ i)
{
for (j = 1; j < k; ++ j)
{
if (w[val + 1])
++ val;
a[i][j] = ++ val;
w[a[i][j]] = 1;
}
if (i % 2)
a[i][j] = val + 2;
else
a[i][j] = ++ val;
w[a[i][j]] = 1;
}
}else
{
for (i = 1; i < n; ++ i)
{
for (j = 1; j < k; ++ j)
{
if (w[val + 1])
++ val;
a[i][j] = ++ val;
w[a[i][j]] = 1;
}
if (i % 2)
a[i][j] = val + 2;
else
a[i][j] = ++ val;
w[a[i][j]] = 1;
}
for (i = 1; i <= k; ++ i)
{
a[n][i] = (n - 1) * k + i;
w[a[n][i]] = 1;
}
w[a[n][k]] = 0;
++ a[n][k];
w[a[n][k]] = 1;
a[1][k + 1] = n * k;
w[n * k] = 1;
}
for (i = 1; i <= n; ++ i)
for (j = k + 1; j <= n; ++ j)
if (!a[i][j])
{
while (w[val + 1])
++ val;
a[i][j] = ++ val;
w[a[i][j]] = 1;
}
}
}
void write()
{
freopen("tablete.out", "w", stdout);
int i, j;
for (i = 1; i <= n; ++ i)
{
for (j = 1; j <= n; ++ j)
printf("%d ", a[i][j]);
printf("\n");
}
}
int main()
{
read();
solve();
write();
return 0;
}