Cod sursa(job #2659688)

Utilizator VladMxPMihaila Vlad VladMxP Data 17 octombrie 2020 12:07:59
Problema Tablete Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin ("tablete.in");
ofstream fout ("tablete.out");
int N, K;
int a[1001][1001];
bool f[1000001];

int main()
{
    fin >> N >> K;
    int nr = 1;
    if (K % 2 == 0)
    {
        for (int i = 1; i <= N; i++)
        {
            for (int j = 1; j <= K; j++)
            {
                a[i][j] = nr;
                nr++;
            }
        }
        for (int i = 1; i <= N; i++)
        {
            for (int j = K + 1; j <= N; j++)
            {
                a[i][j] = nr;
                nr++;
            }
        }
    }
    else
    {
        int ok = 0;
        if (N % 2)
        {
            ok = 1;
        }
        for (int i = 1; i <= N - ok; i++)
        {
            for (int j = 1; j < K; j++)
            {
                while(f[nr])nr++;
                a[i][j] = nr;
                f[nr]=1;
                nr++;
            }
            int newnr=nr+1;
            while(f[newnr]||newnr%2)newnr++;
            a[i][K]=newnr;
            f[newnr]=1;
        }
        while(f[nr])nr++;
        if (ok)
        {
            for (int j = 1; j < K; j++)
            {
                while(f[nr])nr++;
                a[N][j] = nr;
                nr++;
            }
            int newnr=nr+1;
            while(f[newnr]||newnr%2)newnr++;
            a[N][K]=newnr;
            f[newnr]=1;
        }
        for (int i = 1; i <= N; i++)
        {
            for (int j = K + 1; j <= N; j++)
            {
                if (!a[i][j])
                {
                    while(f[nr])nr++;
                    a[i][j] = nr;
                    nr++;
                }
            }
        }
    }
    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            fout << a[i][j] << " ";
        }
        fout << '\n';
    }
}