Pagini recente » Cod sursa (job #2790789) | Cod sursa (job #847730) | Cod sursa (job #1464567) | Cod sursa (job #570464) | Cod sursa (job #954064)
Cod sursa(job #954064)
#include <fstream>
#include <iostream>
#include <iterator>
#include <algorithm>
#define MAXN 1001
using namespace std;
int mat[MAXN][MAXN];
template <typename OutStream, typename IterOut>
void print_matrix(OutStream& outStream, IterOut& itOut, int n)
{
for (int i=1; i<=n; ++i)
{
copy_n(mat[i] + 1, n, itOut);
outStream << "\n";
}
}
int main()
{
int n, k;
fstream fin("tablete.in", fstream::in);
fstream fout("tablete.out", fstream::out);
fin >> n >> k;
//cout << n << " " << k << endl;
int nr = 1;
for (int i=1; i<=n; ++i)
{
for (int j=1; j<=n; ++j)
{
mat[i][j] = nr;
nr++;
}
}
ostream_iterator<int> itOut(fout, " ");
int aux;
if (n % 2 == 0)
{
if (k % 2 != 0)
{
for (int i=2; i<=n; ++i)
{
aux = mat[i-1][n];
mat[i-1][n] = mat[i][k];
for (int j=k; j>1; --j)
{
mat[i][j] = mat[i][j-1];
}
mat[i][1] = aux;
}
aux = mat[1][k];
for (int i=k; i<=n; ++i)
{
swap(mat[1][i], mat[i][1]);
}
}
}
else
{
int start = k % 2 ? 3 : 2;
for (int i = start; i<=n; i+=2)
{
aux = mat[i][k];
for (int j=k; j>1; --j)
{
mat[i][j] = mat[i][j-1];
}
mat[i][1] = mat[i-1][n];
mat[i-1][n] = aux;
}
if (k % 2 != 0)
{
aux = mat[1][n];
for (int j=k; j<n; ++j)
{
mat[1][j] = mat[1][j+1];
}
mat[1][n] = mat[n][1];
mat[n][1] = aux;
}
}
print_matrix(fout, itOut, n);
return 0;
}