Cod sursa(job #471382)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 18 iulie 2010 15:30:38
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.65 kb
#include <stdio.h>
using namespace std;

long int a[1021][1021];
long 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,"%ld ", a[z][t]);
        fprintf (g,"\n");
    }

    fclose(g);
}

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

    fscanf (f,"%ld %ld", &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)
        {
            if (j == K && k % 2 != 0)
            {
                a[i][j] = k + 1;
                a[1][K + 1] = k;
            }
            else
            {
                a[i][j] = k;
                k ++;
            }
        }

        for (i=1; i<=n; ++i)
            for (j=K+1; j<=n; ++j)
            {
                if (a[i][j])
                {
                    k += 2;
                    continue;
                }
                else
                {
                    a[i][j] = k;
                    k ++;
                }
            }
    }

    afisare ();

    fclose(f);
    return 0;
}