Cod sursa(job #2254197)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 4 octombrie 2018 21:04:09
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.41 kb
#include <fstream>
#include <iostream>

using namespace std;

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

int n, k, i, j, x, r, v[1010][1010];

int main () {
    fin >> n >> k;
    if (k % 2 == 0) {
        if (n % 2 == 0) {
            for (j = 1; j <= n; j += 2) {
                x = 1 + (j - 1) * n;
                v[1][j] = x;
                for (i = 2; i <= n; ++i){
                    v[i][j] = v[i - 1][j] + 2;
                }
                v[1][j + 1] = x + 1;
                for (i = 2; i <= n; ++i){
                    v[i][j + 1] = v[i - 1][j + 1] + 2;
                }
            }
        } else {
            for (j = 1; j < n; j += 2) {
                x = 1 + (j - 1) * n;
                v[1][j] = x;
                for (i = 2; i <= n; ++i){
                    v[i][j] = v[i - 1][j] + 2;
                }
                v[1][j + 1] = x + 1;
                for (i = 2; i <= n; ++i){
                    v[i][j + 1] = v[i - 1][j + 1] + 2;
                }
            }
            x = n * n;
            for (i = n; i > 0; --i) {
                v[i][n] = x--;
            }
        }
        for (i = 1; i <= n; ++i) {
            for (j = 1; j <= n; ++j) {
                fout << v[i][j] << ' ';
            }
            fout << "\n";
    }
    } else {
        x = 1;
        for (i = 1; i <= n; ++i) {
            for (j = 1; j <= n; ++j) {
                if (j == 1 && r != 0) {
                    fout << r << ' ';
                    r = 0;
                    continue;
                } else {
                    if (i == n - 1 && j == n) {
                        if (n % 2 == 1 && k % 2 ==0) {
                            fout << n * (n - 1) + 1;
                        } else {
                            fout << n * n;
                        }
                    } else {
                        if (j == k) {
                            if (x % 2 == 0) {
                                fout << x << ' ';
                            } else {
                                fout << x + 1 << ' ';
                                r = x++;
                            }
                        } else {
                            fout << x << ' ';
                        }
                        x++;
                    }
                }
            }
            fout << "\n";
        }
    }
    return 0;
}