Cod sursa(job #471374)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 18 iulie 2010 14:43:52
Problema Tablete Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.5 kb
#include <stdio.h>
using namespace std;

int a[1001][1001];
int v[1001];
int n, K, i, j, k, p;

void afisare ()
{
    FILE *g = fopen ("tablete.out","w");

    int z, t;
    for (z=1; z<=n; ++z)
    {
        for (t=1; t<=n; ++t)
            fprintf (g,"%d ", a[z][t]);
        fprintf (g,"\n");
    }

    fclose(g);
}

int main ()
{
    FILE *f = fopen ("tablete.in","r");

    fscanf (f,"%d %d", &n, &K);

    if (n % 2 == 0 && K % 2 == 0)
    {
        k = 1;
        for (i=1; i<=n; ++i)
        {
            for (j=1; j<=K; ++j)
            {
                a[i][j] = k;
                k ++;
            }
        }
        for (i=1; i<=n; ++i)
            for (j=K+1; j<=n; ++j)
            {
                a[i][j] = k;
                k ++;
            }
    }
    else if (n % 2 == 0 && K % 2 != 0)
    {
        k = 1;
        for (i=1; i<=n; ++i)
            for (j=1; j<=K; ++j)
            {
                if (a[i][j])
                    continue;
                if (j == K && k % 2 != 0)
                {
                    a[i][j] = k + 1;
                    a[i+1][1] = k;
                    k += 2;
                }
                else
                {
                    a[i][j] = k;
                    k ++;
                }
            }
        for (i=1; i<=n; ++i)
            for (j=K+1; j<=n; ++j)
            {
                a[i][j] = k;
                k++;
            }
    }
    else if (n % 2 != 0 && K % 2 != 0)
    {
        k = 1;
        for (i=1; i<n; ++i)
            for (j=1; j<=K; ++j)
            {
                if (a[i][j])
                    continue;
                if (j == K && k % 2 != 0)
                {
                    a[i][j] = k + 1;
                    a[i+1][1] = k;
                    k += 2;
                }
                else
                {
                    a[i][j] = k;
                    k ++;
                }
            }
        for (j=1; j<K; ++j)
            a[n][j] = (n - 1) * K + j;
        a[n][K] = n * K + 1;
        k = n * K;
        for (i=1; i<=n; ++i)
            for (j=K+1; j<=n; ++j)
            {
                if (k != a[n][k])
                {
                    a[i][j] = k;
                    k ++;
                }
                else
                {
                    a[i][j] = k + 2;
                    k += 2;
                }
            }
    }


    afisare ();

    fclose(f);
    return 0;
}