Pagini recente » Cod sursa (job #293140) | Diferente pentru implica-te/arhiva-educationala intre reviziile 32 si 33 | Cod sursa (job #360896) | Cod sursa (job #756062) | Cod sursa (job #800337)
Cod sursa(job #800337)
# include <fstream>
# include <cstring>
# include <algorithm>
# define dim 1005
using namespace std;
ifstream f("tablete.in");
//ofstream g("tablete.out");
int a[ dim ][ dim ];
bool viz[ dim * dim + dim ];
int n, k;
void citire()
{
f >> n >> k;
}
void afisare()
{
int i, j;
for ( i = 1 ; i <= n ; i++ )
{
for ( j = 1 ; j <= n ; j++ )
// g << a[ i ][ j ] << " ";
printf( "%d ", a[ i ][ j ] );
printf( "\n" );
//g << "\n";
}
}
void comp1()
{
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 comp2()
{
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 comp3()
{
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()
{
freopen ("tablete.out", "w", stdout );
citire();
comp1();
comp2();
comp3();
afisare();
return 0;
}