Cod sursa(job #966337)

Utilizator geniucosOncescu Costin geniucos Data 25 iunie 2013 18:59:04
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.44 kb
#include<cstdio>
using namespace std;
int nr,i,j,n,k,a[1013][1013];
int main()
{
freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
scanf("%d",&n);
scanf("%d",&k);
if(k%2==0)
{
    if(n%2==0)
    {
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                nr++;
                printf("%d ",nr);
            }
            printf("\n");
        }
        return 0;
    }
    for(i=1;i<=n;i++)
        for(j=1;j<k;j++)
        {
            nr++;
            a[i][j]=nr;
        }
    for(i=1;i<=n;i++)
        a[i][k]=nr+2*i-1;
    for(i=1;i<=n;i++)
        a[i][k+1]=nr+2*i;
    nr+=2*n;
    for(i=1;i<=n;i++)
        for(j=k+2;j<=n;j++)
        {
            nr++;
            a[i][j]=nr;
        }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
}
else
{
    if(n%2==0)
    {
        for(i=1;i<=n/2;i++)
        {
            for(j=1;j<k;j++)
            {
                nr++;
                a[(i<<1)-1][j]=nr;
            }
            a[(i<<1)-1][k]=nr+2;
            a[i<<1][1]=nr+1;
            nr+=2;
            for(j=2;j<=k;j++)
            {
                nr++;
                a[i<<1][j]=nr;
            }
        }
        for(i=1;i<=n;i++)
            for(j=k+1;j<=n;j++)
            {
                nr++;
                a[i][j]=nr;
            }
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
                printf("%d ",a[i][j]);
            printf("\n");
        }
        return 0;
    }
    for(i=1;i<=n/2;i++)
    {
        for(j=1;j<k;j++)
        {
            nr++;
            a[(i<<1)-1][j]=nr;
        }
        a[(i<<1)-1][k]=nr+2;
        a[i<<1][1]=nr+1;
        nr+=2;
        for(j=2;j<=k;j++)
        {
            nr++;
            a[i<<1][j]=nr;
        }
    }
    for(i=1;i<n-1;i++)
        for(j=k+1;j<=n;j++)
        {
            nr++;
            a[i][j]=nr;
        }
    //////////////mai am de teminat linia n-1 si de construit linia n
    for(j=k+1;j<n;j++)
    {
        nr++;
        a[n-1][j]=nr;
    }
    a[n-1][n]=nr+2;
    a[n][1]=nr+1;
    nr+=2;
    for(i=1;i<=n;i++)
    {
        nr++;
        a[n][i]=nr;
    }
    //////////////
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
}
return 0;
}