Pagini recente » Cod sursa (job #586764) | Cod sursa (job #2239021) | Cod sursa (job #2806936) | Cod sursa (job #2290355) | Cod sursa (job #2254246)
#include <bits/stdc++.h>
using namespace std;
ifstream in("tablete.in");
ofstream out("tablete.out");
int n, k, sol[1010][1010];
bitset <1001 * 1001> viz;
int main(){
in >> n >> k;
int v = 0;
int cnt = 0;
int flag = 1;
for(int i = (k - 1) * n + 1; i <= n * n; i++)
if(i % 2 == 0 && cnt < n){
if(flag){
v = i;
flag = 0;
}
cnt++;
}
for(int i = 1; i <= n; i++, v += 2)
sol[i][k] = v, viz[v] = 1;
if(sol[n][k] == n * n){
viz[sol[n][k]] = 0;
for(int i = 1; i <= n; i++)
sol[i][k] -= 2;
viz[sol[1][k]] = 1;
}
int p = 1;
for(int i = 1; i <= n; i++)
for(int j = 1; j < k; j++){
while(viz[p])
p++;
sol[i][j] = p;
viz[p] = 1;
}
for(int i = 1; i <= n; i++)
for(int j = k + 1; j <= n; j++){
while(viz[p])
p++;
sol[i][j] = p;
viz[p] = 1;
}
if(sol[1][k] > sol[1][k + 1]){
swap(sol[1][k], sol[1][k + 1]);
swap(sol[1][k], sol[n][k - 1]);
}
for(int i = 1; i <= n; i++, out << '\n')
for(int j = 1; j <= n; j++)
out << sol[i][j] << ' ';
return 0;
}