Cod sursa(job #605131)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 26 iulie 2011 20:24:42
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
# include <fstream>
using namespace std;

ifstream f ("tablete.in");
ofstream g ("tablete.out");

int n, k;
int a[1001][1001];

void p1 ()
{
    int nr = 0;
    if (k % 2 == 0)
    {
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= k; ++j)
                a[i][j] = ++nr;
        for (int i = 1; i <= n; ++i)
            for (int j = k + 1; j <= n; ++j)
                a[i][j] = ++nr;
    }
}

void p2 ()
{
    int nr = -1, var = k * 2 - 2;
    if (k % 2 == 1 && n % 2 == 0)
    {
        for (int i = 1; i <= n; )
        {
            for (int j = 1; j < k; ++j)
                a[i][j] = (nr += 2);
            a[i][k] = ++nr;
            int vnr = nr;
            nr -= var;
            ++i;
            for (int j = 1; j < k - 1; ++j)
                a[i][j] = (nr += 2);
            a[i][k - 1] = ++vnr;
            a[i][k] = ++vnr;
            nr = vnr - 1;
            ++i;
        }
        ++nr;
        for (int i = 1; i <= n; ++i)
            for (int j = k + 1; j <= n; ++j)
                a[i][j] = ++nr;
    }
}
void p3 ();
int main ()
{
    f >> n >> k;
    p1 ();
    p2 ();// p3 ();
    for (int i = 1; i <= n; ++i, g << '\n')
        for (int j = 1; j <= n; ++j)
            g << a[i][j] << ' ';

    g.close ();
    return 0;
}