Pagini recente » Cod sursa (job #871665) | Cod sursa (job #3266609) | Cod sursa (job #250555) | Cod sursa (job #2661833) | Cod sursa (job #2254237)
#include <bits/stdc++.h>
using namespace std;
ifstream in("tablete.in");
ofstream out("tablete.out");
int n, k, sol[1010][1010];
set <int> st, dr;
int main(){
in >> n >> k;
for(int i = 1; i <= (k - 1) * n; i++)
st.insert(i);
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++;
} else {
dr.insert(i);
}
for(int i = 1; i <= n; i++, v += 2)
sol[i][k] = v;
if(sol[n][k] == n * n){
for(int i = 1; i <= n; i++)
sol[i][k] -= 2;
dr.insert(n * n);
st.erase(sol[1][k]);
int x = *dr.begin();
dr.erase(dr.begin());
st.insert(x);
}
for(int i = 1; i <= n; i++)
for(int j = 1; j < k; j++){
sol[i][j] = *st.begin();
st.erase(st.begin());
}
for(int i = 1; i <= n; i++)
for(int j = k + 1; j <= n; j++){
sol[i][j] = *dr.begin();
dr.erase(dr.begin());
}
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;
}