Cod sursa(job #1716383)

Utilizator giotoPopescu Ioan gioto Data 12 iunie 2016 17:06:34
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.63 kb
#include <cstdio>
using namespace std;

int n,k;
int main()
{
    freopen("tablete.in", "r", stdin);
    freopen("tablete.out", "w", stdout);
    scanf("%d%d", &n, &k);
    if(n%2==0){
        if(k%2==0){
            int nr=0;
            for(int i=1;i<=n;++i){
                for(int j=1;j<=n;++j){
                    ++nr;
                    printf("%d ",nr);
                }
                printf("\n");
            }
        }
        else{
            int nr=1;
            for(int i=1;i<n-1;++i){
                for(int j=1;j<=n;++j){
                    ++nr;
                    printf("%d ",nr);
                }
                printf("\n");
            }
            printf("1 ");
            int aux=nr;
            nr=nr+n-1;
            for(int j=2;j<=n;++j)
                ++nr,printf("%d ", nr);
            nr=aux;
            printf("\n");
            for(int j=1;j<n;++j)
                ++nr,printf("%d ", nr);
            printf("%d",n*n);
        }
    }
    else{
        int a[n+1][n+1];
        if(k%2==0){
            int nri=-1,nrp=0;
            for(int i=1;i<n;++i){
                if(i%2==1)
                for(int j=1;j<=n;++j){
                    nri+=2;
                    a[j][i]=nri;
                }
                else
                for(int j=1;j<=n;++j){
                    nrp+=2;
                    a[j][i]=nrp;
                }
            }
            for(int i=1;i<=n;++i)
                a[i][n]=++nrp;
            for(int i=1;i<=n;++i){
                for(int j=1;j<=n;++j)
                printf("%d ", a[i][j]);
                printf("\n");
            }
        }
        else{
            int nr=0;
            for(int i=1;i<n;++i){
                ++nr;a[i][1]=nr;
                ++nr;a[i][2]=nr;
            }
            ++nr;a[n][1]=nr;
            nr+=2;a[n][2]=nr;
            int nrp=n*2-2;
            for(int i=3;i<n;++i){
                if(i%2==1){
                    for(int j=1;j<=n;++j){
                        nrp+=2;
                        a[j][i]=nrp;
                    }
                }
                else{
                    for(int j=1;j<=n;++j){
                        nr+=2;
                        a[j][i]=nr;
                    }
                }
            }
            a[1][n]=nrp+2;
            for(int i=2;i<=n;++i){
                ++nr;
                a[i][n]=nr;
            }
            for(int i=1;i<=n;++i){
                for(int j=1;j<=n;++j)
                    printf("%d ", a[i][j]);
                printf("\n");
            }
        }
    }
    return 0;
}