Cod sursa(job #1886833)

Utilizator mihai.alphamihai craciun mihai.alpha Data 21 februarie 2017 10:27:27
Problema Tablete Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <bits/stdc++.h>

using namespace std;

#define in "tablete.in"
#define out "tablete.out"
#define in1 "tabele.in"
#define out1 "tabele.out"

FILE *fin = fopen(in, "r"), *fout = fopen(out, "w");

#define MAX_N 1001

int v[MAX_N][MAX_N];
bool val[MAX_N * MAX_N];///0 -> este disponibil, 1 -> nu este disponibil
vector <int> pare;
int N, K, nn, ind = 1;

inline int next()  {
    while(val[ind] == 1 && ind <= nn)
        ind++;
    val[ind] = 1;
    return ind;
}

inline void solve()  {
    for(int i = 1;i <= nn;i++)  {
        if(!(i & 1))
            pare.push_back(i);
    }
        int beg = K - 1;
        for(int i = 1;i <= N;i++)
            v[i][K] = pare[beg + i - 1], val[pare[beg + i - 1]] = 1;
        for(int i = 1;i <= N;i++)  {
            for(int j = 1;j < K;j++)
                v[i][j] = next();
        }
        for(int i = 1;i <= N;i++)
            for(int j = K + 1;j <= N;j++)
                v[i][j] = next();
}

int main()  {
    fscanf(fin, "%d%d", &N, &K);
    nn = N * N;
    solve();
    for(int i = 1;i <= N;i++)  {
        for(int j = 1;j <= N;j++)  {
            fprintf(fout, "%d", v[i][j]);
            fputc(' ', fout);
        }
        fputc('\n', fout);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}