Cod sursa(job #1887247)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 21 februarie 2017 14:19:32
Problema Tablete Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 1.68 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)
        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){
            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
        {
            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");
            }
        }
    }

    return 0;
}