Cod sursa(job #2255388)

Utilizator mihaicivMihai Vlad mihaiciv Data 6 octombrie 2018 20:37:57
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#define nmax 1010
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");

void Read();
void Solve();
void Print();

int n, k, a[nmax][nmax], vis[nmax * nmax];

int main() {

    Read();
    Solve();
    Print();

    return 0;
}

void Read() {
    f >> n >> k;
}

void Solve() {
    int currEven = 2;
    int currValue = 1;
    for (int i = 1;i <= n; ++ i) {
        for (int j = 1;j < k; ++ j) {
            a[i][j] = currValue;
            vis[currValue] = 1;
            while (vis[currValue] == 1) {
                currValue ++;
            }
        }
        while (vis[currEven] == 1) {
            currEven = currEven + 2;
        }
        vis[currEven] = 1;
        a[i][k] = currEven;
    }
    int lastElement = n * n;
    for (int i = n;i >= 1; --i) {
        for (int j = n; j > k; --j) {
            while (vis[lastElement] == 1) {
                lastElement --;
            }
            a[i][j] = lastElement;
            vis[lastElement] = 1;
        }
    }

}

void Print() {
    for (int i = 1;i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            g << a[i][j] << " ";
        }
        g << "\n";
    }
}