Cod sursa(job #1888540)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 22 februarie 2017 10:34:47
Problema Tablete Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 2.63 kb
#include <stdio.h>
#include <stdlib.h>
int a[1001][1001],v[1000001];
int main()
{
    int n,k,i,j,c;
    freopen("tablete.in","r",stdin);
    freopen("tablete.out","w",stdout);
    scanf("%d%d",&n,&k);
    if(k%2==0 && n%2==0)
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++)
                printf("%d ",(i-1)*n+j);
            printf("\n");
        }
    else
    {
        if(n%2==0 && k%2==1){
            c=k+1;
            for(j=k; j<=n; j++,c++)
                a[1][j]=c;
            for(i=2; i<=n-1; i++)
                for(j=1; j<=n; j++,c++)
                    a[i][j]=c;
            c--;
            a[n-1][n]=n*n;
            for(j=2; j<=n; j++,c++)
                a[n][j]=c;
            a[n][1]=k;
            for(j=1; j<k; j++)
                a[1][j]=j;
            for(i=1; i<=n; i++){
                for(j=1; j<=n; j++)
                    printf("%d ",a[i][j]);
                printf("\n");
            }
        }
        else
        {
            if(k%2==1 && n%2==1){
                for(i=1; i<=n; i++)
                    for(j=1; j<=n; j++)
                        a[i][j]=(i-1)*n+j;
                for(i=1; i<=n-2; i+=2)
                    for(j=1; j<=n-1; j++)
                        a[i][j]=(i-1)*n+j+1;
                for(j=2; j<=n; j++)
                    a[n][j]=(n-1)*n+j-1;
                a[n][1]=1;
                c=1;
                for(i=1; i<=n-2; i+=2,c++)
                    v[c]=(i-1)*n+1;
                v[c]=n*n;
                c=2;
                for(i=1; i<=n-2; i+=2,c++)
                    a[i][n]=v[c];
                for(i=1; i<=n; i++){
                    for(j=1; j<=n; j++)
                        printf("%d ",a[i][j]);
                    printf("\n");
                }
            }
            else
            {
                for(i=1; i<=n; i++)
                    for(j=1; j<=n; j++)
                        a[i][j]=(i-1)*n+j;
                for(i=2; i<=n-2; i+=2)
                    for(j=1; j<=n-1; j++)
                        a[i][j]=(i-1)*n+j+1;
                for(j=2; j<=n; j++)
                    a[n-1][j]=(n-2)*n+j-1;
                a[n-1][1]=n+1;
                c=1;
                for(i=2; i<=n-2; i+=2,c++)
                    v[c]=(i-1)*n+1;
                v[c]=n*n-n;
                c=2;
                for(i=2; i<=n-2; i+=2,c++)
                    a[i][n]=v[c];
                for(i=1; i<=n; i++){
                    for(j=1; j<=n; j++)
                        printf("%d ",a[i][j]);
                    printf("\n");
                }
            }
        }
    }

    return 0;
}