Pagini recente » Cod sursa (job #684933) | Cod sursa (job #2111149) | Cod sursa (job #2714916) | Cod sursa (job #2142190) | Cod sursa (job #605133)
Cod sursa(job #605133)
# include <fstream>
using namespace std;
ifstream f ("tablete.in");
ofstream g ("tablete.out");
int n, k;
int a[1004][1004];
void p1 ()
{
int nr = 0;
if (k % 2 == 0)
{
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= k; ++j)
a[i][j] = ++nr;
for (int i = 1; i <= n; ++i)
for (int j = k + 1; j <= n; ++j)
a[i][j] = ++nr;
}
}
void p2 ()
{
int nr = -1, var = k * 2 - 2;
if (k % 2 == 1 && n % 2 == 0)
{
for (int i = 1; i <= n; )
{
for (int j = 1; j < k; ++j)
a[i][j] = (nr += 2);
a[i][k] = ++nr;
int vnr = nr;
nr -= var;
++i;
for (int j = 1; j < k - 1; ++j)
a[i][j] = (nr += 2);
a[i][k - 1] = ++vnr;
a[i][k] = ++vnr;
nr = vnr - 1;
++i;
}
++nr;
for (int i = 1; i <= n; ++i)
for (int j = k + 1; j <= n; ++j)
a[i][j] = ++nr;
}
}
void p3 ()
{
int nr = -1, var = k * 2 - 2;
if (k % 2 == 1 && n % 2 == 1)
{
for (int i = 1; i < n; )
{
for (int j = 1; j < k; ++j)
a[i][j] = (nr += 2);
a[i][k] = ++nr;
int vnr = nr;
nr -= var;
++i;
for (int j = 1; j < k - 1; ++j)
a[i][j] = (nr += 2);
a[i][k - 1] = ++vnr;
a[i][k] = ++vnr;
nr = vnr - 1;
++i;
}
//++nr;
for (int j = 1; j < k; ++j)
a[n][j] = ++nr;
a[n][k] = (nr += 2);
a[1][k + 1] = --nr;
a[1][k + 2] = (nr += 2);
for (int j = k + 3; j <= n; ++j)
a[1][j] = ++nr;
for (int i = 2; i <= n; ++i)
for (int j = k + 1; j <= n; ++j)
a[i][j] = ++nr;
}
}
int main ()
{
f >> n >> k;
p1 ();
p2 ();
p3 ();
for (int i = 1; i <= n; ++i, g << '\n')
for (int j = 1; j <= n; ++j)
g << a[i][j] << ' ';
g.close ();
return 0;
}