Pagini recente » Cod sursa (job #404956) | Cod sursa (job #158727) | Cod sursa (job #469849) | Cod sursa (job #1049469) | Cod sursa (job #289947)
Cod sursa(job #289947)
#include<stdio.h>
#define p 1001
int n,m,k,i,a[p][p],j,l;
int val[1000001];
void afis()
{
int i,k;
for(i=1;i<=n;i++,printf("\n"))
for(k=1;k<=n;k++)
printf("%d ", a[i][k]);
}
void fill(int w)
{
int x=1;
if(w==1)
{
for(i=1;i<=n;i++)
for(j=1;j<=k;j++,x++)
{ a[i][j]=x;
val[x]=1;
}l=1;
for(i=1;i<=n;i++)
for(j=k+1;j<=n;j++)
{for(l;l<=n*n;l++)
if(val[l]==0)
{val[l]=1;
a[i][j]=l;
break;
}
}
// afis();
return ;
}
if(w==3 || w==2)
{
for(i=1;i<=k;i++)
{ a[1][i]=i+1;
val[i+1]=1;
}
a[2][1]=1;
val[1]=1;
for(i=k+2,j=2;j<=k;i++,j++)
{ a[2][j]=i;
val[i]=1;
}
for(i=3;i<=n;i++)
{
a[i][1]=a[i-1][k]+2;
val[a[i][1]]=1;
for(j=2;j<=k;j++)
{ a[i][j]=a[i][j-1]+1;
val[a[i][j]]=1;
}
}
l=1;
for(i=1;i<=n;i++)
for(j=k+1;j<=n;j++)
{
for(l;l<=n*n;l++)
if(val[l]==0)
{val[l]=1;
a[i][j]=l;
break;
}}
// afis();
return ;
}
}
int main ()
{
freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
int o=1;
scanf("%d%d",&n,&k);
if(n%2==0 && k%2==0)
fill(1);
else
if(n%2==1 && k%2==0)
fill(2);
else
fill(3);
if(n%2 && k%2 && n==k)
{
for(i=n;i>2;i--)
{for(k=n;k>=1;k--)
a[n][k]=a[n][k-1];
}
for(i=1;i<=n-2;i++)
for(k=1;k<=n*n;k++)
if(val[k]==0)
{a[n][i]=k;
val[k]=1;
break;
}
}
afis();
return 0;
}