Cod sursa(job #1884004)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 18 februarie 2017 13:16:33
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
#define NMAX 1000

using namespace std;

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

bool f[1 + NMAX * NMAX];
int a[1 + NMAX][1 + NMAX];

int main() {
    int n,k,l,c,b,i,v,last;
    fin >> n >> k;
    for (i=1; i<=n; ++i) {
        b = (i - 1) * n + k;
        if (b & 1 == 1)
            b++;
        a[i][k] = b;
        f[b] = true;
    }
    v = 1;
    for (l=1; l<=n; ++l) {
        for (c=1; c<=n; ++c) {
            if (!a[l][c]) {
                a[l][c] = v++;
                while (f[v] == true)
                    v++;
            } else {
                last = v;
                v = a[l][c] + 1;
                f[v] = true;
                ++c;
                while (c <= n) {
                    a[l][c++] = v++;
                    while (f[v] == true)
                        v++;
                    f[v] = true;
                }
                v = last + 1;
                while (f[v] == true)
                   v++;
            }
        }
    }
    for (l=1; l<=n; ++l) {
        for (c=1; c<=n; ++c)
            fout << a[l][c] << ' ';
        fout << '\n';
    }
    return 0;
}