Cod sursa(job #1216495)

Utilizator cojocarugabiReality cojocarugabi Data 4 august 2014 18:28:54
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
int s[1005][1005];
int main(void)
{
    int n,k;
    freopen("tablete.in","r",stdin);
    freopen("tablete.out","w",stdout);
    scanf("%d%d\n",&n,&k);
    if (!(k%2))
        for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) s[i][j]=(i-1)*n+j;
    else
    if (!(n%2))
    {
        for (int i=1;i<=n;++i) for (int j=1;j<=k;++j)
            if (i>1 && !(i%2) && j==1) s[i][j]=(i-1)*k;else if ((i%2) && j==k) s[i][j]=i*k+1;else s[i][j]=(i-1)*k+j;
        int a=n*k;
        for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) if (!s[i][j]) s[i][j]=(++a);
    }
    else
    {
        for (int i=1;i<n;++i) for (int j=1;j<=k;++j)
            if (i>1 && !(i%2) && j==1) s[i][j]=(i-1)*k;else if ((i%2) && j==k) s[i][j]=i*k+1;else s[i][j]=(i-1)*k+j;
        int a=n*k+2;
        for (int i=k;i;--i) s[n][i]=(--a);
        s[1][k+1]=(n-1)*k+1;
        a=n*k+1;
        for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) if (!s[i][j]) s[i][j]=(++a);
    }
    for (int i=1;i<=n;++i,printf("\n")) for (int j=1;j<=n;++j) printf("%d ",s[i][j]);
}