Cod sursa(job #1172007)

Utilizator tudorv96Tudor Varan tudorv96 Data 16 aprilie 2014 17:36:17
Problema Tablete Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
using namespace std;

ifstream fin ("tablete.in");
ofstream fout ("tablete.out");

const int N = 1005;

int n, k, a[N][N], nr;

int main() {
    fin >> n >> k;
    for (int j = 1; j < k - 1; ++j)
        for (int i = 1; i <= n; ++i)
            a[i][j] = (j-1) * n + ((i % n == 0) ? n : (i % n));
    for (int j = k + 1; j <= n; ++j)
        for (int i = 1; i <= n; ++i)
            a[i][j] = (j-1) * n + ((i % n == 0) ? n : (i % n));
    int nr = n * (k - 2) + 1;
    if (nr & 1)
        for (int i = 1; i <= n; ++i)
            a[i][k-1] = nr + (i - 1) * 2;
    else {
        nr++;
        for (int i = 1; i <= n; ++i)
            a[i][k-1] = nr + (i - 1) * 2;
    }
    nr = n * (k - 2) + 1;
    if (nr & 1)
        nr++;
    if (n % 2 == 1)
        nr += 2;
    for (int i = 1; i <= n; ++i)
        a[i][k] = (i - 1) * 2 + nr;
    swap (a[2][k-1], a[1][k+1]);
    a[2][k-1] = n * (k - 2) + ((k & 1) ? 1 : 2);
    if (!(k & 1))
        a[2][k+1]--;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j)
            fout << a[i][j] << " ";
        fout << "\n";
    }
}