Cod sursa(job #988823)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 23 august 2013 22:41:33
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.59 kb
#include<cstdio>
using namespace std;
int N,K,i,j,cnt,last,A[1005][1005];
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)
            for(i=1;i<=N;i++)
            {
                for(j=1;j<=N;j++) printf("%d ",++cnt);
                printf("\n");
            }
        else
        {
            for(j=1;j<=N;j++)
            {
                if(j==K) cnt++,last=cnt;
                printf("%d ",++cnt);
            }
            printf("\n");
            for(i=2;i<=N-2;i++)
            {
                for(j=1;j<=N;j++)
                {
                    if(j==1) {printf("%d ",last); continue;}
                    if(j==K) cnt++,last=cnt;
                    printf("%d ",++cnt);
                }
                printf("\n");
            }
            for(j=1;j<=N;j++)
            {
                if(j==1) {printf("%d ",last); continue;}
                if(j==N) {printf("%d ",N*N); continue;}
                if(j==K) cnt++,last=cnt;
                printf("%d ",++cnt);
            }
            printf("\n");
            for(j=1;j<=N;j++)
            {
                if(j==1) {printf("%d ",last); continue;}
                printf("%d ",++cnt);
            }
            printf("\n");
        }
    }
    else
    {
        if(K%2==0)
        {
            for(i=1;i<=N;i++)
                for(j=1;j<=K;j++) A[i][j]=++cnt;
            for(i=1;i<=N;i++)
                for(j=K+1;j<=N;j++) A[i][j]=++cnt;
        }
        else
        {
            for(i=1;i<=N;i++)
                for(j=1;j<=K;j++)
                {
                    if(j==1)
                    {
                        if(last) A[i][j]=last;
                        else A[i][j]=++cnt;
                        continue;
                    }
                    if(j!=K) {A[i][j]=++cnt; continue;}
                    ++cnt;
                    if(cnt%2==1) last=cnt,A[i][j]=++cnt;
                    else last=0,A[i][j]=cnt;
                }
            for(i=1;i<=N;i++)
                for(j=K+1;j<=N;j++)
                {
                    if(j==K+1)
                    {
                        if(last) A[i][j]=last,last=0;
                        else A[i][j]=++cnt;
                        continue;
                    }
                    A[i][j]=++cnt;
                }
        }
        for(i=1;i<=N;i++)
        {
            for(j=1;j<=N;j++) printf("%d ",A[i][j]);
            printf("\n");
        }
    }
    return 0;
}