Cod sursa(job #3330738)

Utilizator tredieuneSavu Stefan tredieune Data 21 decembrie 2025 17:09:52
Problema Tablete Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 4.01 kb
#include <fstream>

using namespace std;
ifstream cin("tablete.in");
ofstream cout("tablete.out");
int main()
{
    int n,k,i,j,nr_fata,nr_spate,nr_mijloc;
    cin >> n >> k;
    if (n % 2 == 0 && k % 2 == 0)
    {
        for (i = 1 ; i <= n ; i++)
        {
            for (j = 1 ; j <= n ; j++)
            {
                cout << (i - 1) * n + j << " ";
            }
            cout << '\n';
        }
    }

    if (n % 2 == 0 && k % 2 == 1)
    {
        nr_fata = 1;
        nr_spate = n * n;
        for (i = 1 ; i < n ; i++)
        {
            j = 1;
            if (i % 2 == 0)
            {
                j = 2;
                cout << nr_fata - 1 << " ";
                nr_fata++;
            }
            while (j < k)
            {
                nr_fata++;
                cout << nr_fata - 1 << " ";
                j++;
            }
            if (i % 2 == 1) cout << nr_fata + 1 << " ";
            else cout << nr_fata << " ";
            nr_fata++;
            j++;
            nr_spate -= n - k;
            while (j <= n)
            {
                cout << nr_spate << " ";
                nr_spate++;
                j++;
            }
            nr_spate -= n - k - 1;
            nr_spate -= 2;
            cout << '\n';
        }
        nr_fata--;
        cout << nr_fata << " ";
        nr_spate += n - k + 1;
        while (nr_spate <= n * n)
        {
            cout << nr_spate << " ";
            nr_spate += n - k + 1;
        }
    }


    if (n % 2 == 1 && k % 2 == 0)
    {
        nr_fata = 1;
        for (i = 1 ; i <= n ; i++)
        {
            j = 1;
            while (j <= k)
            {
                cout << nr_fata << " ";
                nr_fata++;
                j++;
            }
            if (i % 2 == 0)
            {
                nr_fata++;
            }
            while (j < n)
            {
                cout << nr_fata << " ";
                nr_fata++;
                j++;
            }
            if (i % 2 == 1 && i != n)
            {
                cout << nr_fata + k << " ";
            }
            else
            {
                cout << nr_fata << " ";
                nr_fata++;
            }
            cout << '\n';
        }
    }

    if (n % 2 == 1 && k % 2 == 1)
    {
        nr_fata = 1;
        nr_spate = n * n + 1;
        nr_mijloc = k * (n - 1) + 3;

        j = 1;
        while (j < k)
        {
            nr_fata++;
            cout << nr_fata - 1 << " ";
            j++;
        }
        cout << nr_fata + 1 << " ";
        nr_fata++;
        j++;
        nr_spate -= n - k - 1;
        cout << nr_mijloc << " ";
        nr_mijloc += 2;
        j++;
        while (j <= n)
        {
            cout << nr_spate << " ";
            nr_spate++;
            j++;
        }
        nr_spate -= n - k - 1;
        nr_spate--;
        cout << '\n';

        for (i = 2 ; i < n ; i++)
        {
            j = 1;
            if (i % 2 == 0)
            {
                j = 2;
                cout << nr_fata - 1 << " ";
                nr_fata++;
            }
            while (j < k)
            {
                nr_fata++;
                cout << nr_fata - 1 << " ";
                j++;
            }
            if (i % 2 == 1) cout << nr_fata + 1 << " ";
            else cout << nr_fata << " ";
            nr_fata++;
            j++;
            nr_spate -= n - k - 2;
            cout << nr_mijloc << " ";
            j++;
            nr_mijloc += 2;
            while (j <= n)
            {
                cout << nr_spate << " ";
                nr_spate++;
                j++;
            }
            nr_spate -= n - k - 1;
            nr_spate--;
            cout << '\n';
        }
        cout << nr_fata << " ";
        nr_fata++;
        while (nr_fata <= nr_mijloc - 2)
        {
            cout << nr_fata << " ";
            nr_fata += 2;
        }
    }
    return 0;
}