Cod sursa(job #1366329)

Utilizator retrogradLucian Bicsi retrograd Data 28 februarie 2015 22:45:38
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#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++;
        }
    }
}

int main() {

    fin>>n>>k;

    if(n*(k-1)%2==1) {
        build_1();
    } else if(n*(k-2)%2==0) {
        build_2();
    }

    for(var i=1; i<=n; i++) {
        for(var j=1; j<=n; j++) {
            fout<<M[i][j]<<" ";
        }
        fout<<endl;
    }

    return 0;

}