Pagini recente » Cod sursa (job #891920) | Cod sursa (job #1968534) | Cod sursa (job #2095194) | Cod sursa (job #2450038) | Cod sursa (job #1706237)
#include <iostream>
#include <fstream>
#include <cassert>
using namespace std;
ifstream in("tablete.in");
ofstream out("tablete.out");
const int maxn = 1005;
int M[maxn][maxn];
int main()
{
int n, k;
in >> n >> k;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
M[i][j] = (i - 1) * n + j;
if(n % 2 == 0 && k % 2 == 0)
{
for(int i = 1; i <= n; i++, out << "\n")
for(int j = 1; j <= n; j++)
out << M[i][j] << " ";
}
if(n % 2 == 0 && k % 2 == 1)
{
for(int i = 1; i <= n; i++)
for(int j = k; j <= n - 1; j++)
swap(M[i][j], M[i][j+1]);
for(int i = 1; i < n; i++)
swap(M[i][n], M[i+1][1]);
for(int i = 1; i <= n; i++, out << "\n")
for(int j = 1; j <= n; j++)
out << M[i][j] << " ";
}
if(n % 2 == 1 && k % 2 == 0)
{
assert(false);
for(int i = 2; i <= n; i = i + 2)
for(int j = k; j < n; j++)
swap(M[i][j], M[i][j+1]);
for(int i = 2; i <= n; i = i + 2)
swap(M[i][n], M[i+1][1]);
for(int i = 1; i <= n; i++, out << "\n")
for(int j = 1; j <= n; j++)
out << M[i][j] << " ";
}
if(n % 2 == 1 && k % 2 == 1)
{
assert(false);
for(int i = 1; i <= n; i = i + 2)
for(int j = k; j < n; j++)
swap(M[i][j], M[i][j+1]);
for(int i = 1; i < n; i = i + 2)
swap(M[i][n], M[i+1][1]);
for(int i = 1; i <= n; i++, out << "\n")
for(int j = 1; j <= n; j++)
out << M[i][j] << " ";
}
return 0;
}