Cod sursa(job #232738)

Utilizator Mishu91Andrei Misarca Mishu91 Data 15 decembrie 2008 23:48:40
Problema Tablete Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

#define MAX_N 1003

int N, K;
bool viz[MAX_N*MAX_N];
int A[MAX_N][MAX_N];

int main()
{
    freopen("tablete.in","rt",stdin);
    freopen("tablete.out","wt",stdout);

    scanf("%d %d",&N, &K);

    int p = K, r = 0;
    if(p & 1) ++p, r = 1;
    A[1][K] = p;
    viz[p] = 1;

    for(int i = 2; i <= N; ++i)
    {
        p = p + K - r;
        r = p - i*K;
        if((p & 1)) p--, r--;
        viz[p] = 1;
        A[i][K] = p;
    }
    p = 1;
    for(int i = 1; i <= N; ++i)
        for(int j = 1; j < K; ++j)
        {
            while(viz[p]) p++;
            A[i][j] = p++;
        }
    for(int i = 1; i <= N; ++i)
        for(int j = K+1; j <= N; ++j)
        {
            while(viz[p]) p++;
            A[i][j] = p++;
        }
    for(int i = 1; i <= N; ++i)
    {
        for(int j = 1; j <= N; ++j)
            printf("%d ",A[i][j]);
        printf("\n");
    }
}