Pagini recente » Cod sursa (job #1649186) | Cod sursa (job #1522650) | Cod sursa (job #1044735) | Cod sursa (job #1759766) | Cod sursa (job #1366339)
#include<fstream>
#include<list>
using namespace std;
typedef int var;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
var M[1001][1001];
var n, k;
void build_1() {
var A = (n*(k-1)+1)/2;
for(var i=1; i<=n; i++) {
M[i][k] = 2*(A+i-1);
M[i][k+1] = 2*(A+i-1) + 1;
}
var val = 1;
for(var i=1; i<=n; i++) {
for(var j=1; j<=k-1; j++) {
M[i][j] = val++;
}
}
val = 2*A + 2*n;
for(var i=1; i<=n; i++) {
for(var j=k+2; j<=n; j++) {
M[i][j] = val++;
}
}
}
void build_2() {
var A = n*(k-2)/2;
for(var i=1; i<=n; i++) {
M[i][k] = 2*A + 2*i;
M[i][k-1] = 2*A + 2*i - 1;
}
var val = 1;
for(var i=1; i<=n; i++) {
for(var j=1; j<=k-2; j++) {
M[i][j] = val++;
}
}
val = 2*A + 2*n + 1;
for(var i=1; i<=n; i++) {
for(var j=k+1; j<=n; j++) {
M[i][j] = val++;
}
}
}
void build_3() {
var A = n*(k-1)/2;
for(var i=1; i<n; i++) {
M[i][k] = 2*(A+i-1);
M[i][k+1] = M[i][k] + 1;
}
M[n][k] = 2*A + 2*n;
M[n][k+1] = M[n][k] + 1;
M[1][k+2] = 2*A + 2*n - 2;
M[n][k-1] = 2*A + 2*n - 1;
var val = 1;
for(var i=1; i<=n; i++) {
for(var j=1; j<=k-1; j++) {
if(M[i][j] == 0) {
M[i][j] = val++;
}
}
}
val = 2*A+2*n+2;
for(var i=1; i<=n; i++) {
for(var j=k+2; j<=n; j++) {
if(M[i][j] == 0) {
M[i][j] = val++;
}
}
}
}
int main() {
fin>>n>>k;
if(n*(k-1)%2==1) {
build_1();
} else if(n*(k-2)%2==0) {
build_2();
} else {
build_3();
}
for(var i=1; i<=n; i++) {
for(var j=1; j<=n; j++) {
fout<<M[i][j]<<" ";
}
fout<<endl;
}
return 0;
}