Cod sursa(job #604220)

Utilizator vlad2901Vlad Berindei vlad2901 Data 21 iulie 2011 00:36:16
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.45 kb
#include <stdio.h>
#define MAX 1001

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

void parpar();
void imparpar();
void parimpar();
void imparimpar();
void set();
void print();
void inter(int, int, int, int);

int main()
{
    int i, j;

    freopen("tablete.in", "r", stdin);
    freopen("tablete.out", "w", stdout);

    scanf("%d %d", &n, &k);

    if(n%2 == 0 && k%2 == 0)
    {
        parpar();
    }

    if(n%2 == 1 && k%2 == 0)
    {
        imparpar();
    }

    if(n%2 == 0 && k%2 == 1)
    {
        parimpar();
    }

    if(n%2 == 1 && k%2 == 1)
    {
        imparimpar();
    }

    return 0;
}


void set()
{
    int i, j, x=1;
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n;++j)
        {
            a[i][j] = x++;
        }
    }
}

void print()
{
    int i, j;
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n;++j)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
}

void inter(int i1, int j1, int i2, int j2)
{
    int aux;
    aux = a[i1][j1];
    a[i1][j1] = a[i2][j2];
    a[i2][j2] = aux;
}


void parpar()
{
    int i, j, x=1;
    set();
    print();
}

void imparpar()
{
    int i, j, x=0;

    for(i=1;i<n;++i)
    {
        x++;
        for(j=0;j<n;++j)
        {
            printf("%d ", x++);
        }
        printf("\n");
    }
    for(i=1;i<n;++i)
    {
        printf("%d ", i*(n+1));
    }
    printf("%d ", n*n);
}

void parimpar()
{
    int i, j, x = 1;
    set();
    for(i=1;i<=n-1;i+=2)
    {
        for(j=1;j<k;++j)
        {
            a[i][j] = x++;
        }
        a[i][k] = x+1;
        a[i+1][1] = x;
        x += 2;

        for(j=2;j<=k;++j)
        {
            a[i+1][j] = x++;
        }
    }

    for(i=1;i<=n;++i)
    {
        for(j=k+1;j<=n;++j)
        {
            a[i][j] = x++;
        }

    }
    print();
}

void imparimpar()
{
    int i, j, x=1;

    for(i=1;i<n-1;i+=2)
    {
        for(j=1;j<k;++j)
        {
            a[i][j] = x++;
        }
        a[i][k] = x+1;
        a[i+1][1] = x;
        x += 2;

        for(j=2;j<=k;++j)
        {
            a[i+1][j] = x++;
        }
    }

    for(j=1;j<k;++j)
    {
        a[n][j] = x++;
    }
    a[n][k] = n*k + 1;
    x = n*k+1;

    for(i=1;i<=n;++i)
    {
        for(j=k+1;j<=n;++j)
        {
            a[i][j] = x++;
        }

    }

    a[1][k+1] = n*k;

    print();

}