Pagini recente » Cod sursa (job #2164239) | Cod sursa (job #88210) | Cod sursa (job #3199779) | Cod sursa (job #1130075) | Cod sursa (job #1835704)
#include <fstream>
#include <vector>
using namespace std;
const int nmax = 1005;
int mat[nmax][nmax];
void solve(int N, int K)
{
if(N % 2 == 0)
{
if(K % 2 == 0)
{
int cur = 1;
for(int i = 0;i < N;++i)
{
for(int j = 0;j < N;++j)
{
mat[i][j] = cur;
++cur;
}
}
}
else
{
int cur = 2;
for(int i = 0;i < N - 1;++i)
{
for(int j = 0;j < N;++j)
{
mat[i][j] = cur;
++cur;
}
}
mat[N - 1][0] = 1;
for(int i = 1;i < N;++i)
{
mat[N - 1][i] = cur;
++cur;
}
swap(mat[N - 1][K - 1], mat[N - 2][N - 1]);
int i = K - 1;
while(mat[N - 1][i - 1] != 1)
{
swap(mat[N - 1][i], mat[N - 1][i - 1]);
--i;
}
}
}
else
{
if(K % 2 == 0)
{
int cur = 1;
vector<int> v;
for(int i = 0;i < N - 1;++i)
{
for(int j = 0;j < N;++j)
{
mat[i][j] = cur;
++cur;
}
v.push_back(cur);
++cur;
}
for(int i = 0;i < N - 1;++i)
{
mat[N - 1][i] = v[i];
}
mat[N - 1][N - 1] = N * N;
}
else
{
int cur = 2;
vector<int> v;
v.push_back(1);
for(int i = 0;i < N - 1;++i)
{
for(int j = 0;j < N;++j)
{
mat[i][j] = cur;
++cur;
}
v.push_back(cur);
++cur;
}
for(int i = 0;i < N;++i)
{
mat[N - 1][i] = v[i];
}
int elem = mat[N - 1][K - 1];
--elem;
int ii, jj;
for(int i = 0;i < N;++i)
{
for(int j = 0;j < N;++j)
{
if(mat[i][j] == elem)
{
ii = i;
jj = j;
break;
}
}
}
swap(mat[N - 1][K - 1], mat[ii][jj]);
}
}
}
int main()
{
ifstream in("tablete.in");
ofstream out("tablete.out");
int N, K;
in >> N >> K;
solve(N, K);
for(int i = 0;i < N;++i)
{
for(int j = 0;j < N;++j)
{
out<<mat[i][j]<<" ";
}
out<<"\n";
}
in.close();
out.close();
}