Cod sursa(job #232725)

Utilizator Mishu91Andrei Misarca Mishu91 Data 15 decembrie 2008 23:32:09
Problema Tablete Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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 - 1 + r;
        r = p - (i-1)*K - K + 1;
        if((p & 1))
            if(r > 0) p--, r--;
            else 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++;
            viz[p] = 1;
            A[i][j] = p++;
        }
    for(int i = 1; i <= N; ++i)
        for(int j = K+1; j <= N; ++j)
        {
            while(viz[p]) p++;
            viz[p] = 1;
            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");
    }
}