Cod sursa(job #800337)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 21 octombrie 2012 13:13:55
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.52 kb
# include <fstream>
# include <cstring>
# include <algorithm>

# define dim 1005

using namespace std;

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


int a[ dim ][ dim ];
bool viz[ dim * dim + dim ];
int n, k;

void citire()
{
    f >> n >> k;
}

void afisare()
{
    int i, j;


    for ( i = 1 ; i <= n ; i++ )
    {
        for ( j = 1 ; j <= n ; j++ )
          // g << a[ i ][ j ] << " ";
          printf( "%d ", a[ i ][ j ] );
        printf( "\n" );

        //g << "\n";
    }


}

void comp1()
{
    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 comp2()
{

    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 comp3()
{
        int nr = -1, var = k * 2 - 2;
    if (k % 2 == 1 && n % 2 == 1)
    {
        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 j = 1; j < k; ++j)
            a[n][j] = ++nr;
        a[n][k] = (nr += 2);
        a[1][k + 1] = --nr;
        a[1][k + 2] = (nr += 2);
        for (int j = k + 3; j <= n; ++j)
            a[1][j] = ++nr;
        for (int i = 2; i <= n; ++i)
            for (int j = k + 1; j <= n; ++j)
                a[i][j] = ++nr;
    }
}

int main()
{
    freopen ("tablete.out", "w", stdout );
    citire();
    comp1();
    comp2();
    comp3();
    afisare();
    return 0;
}