Pagini recente » Cod sursa (job #971303) | Cod sursa (job #703491) | Cod sursa (job #1295592) | Cod sursa (job #2753168) | Cod sursa (job #231637)
Cod sursa(job #231637)
#include<cstdio>
#define Nm 1024
using namespace std;
int A[Nm][Nm],n,k;
int main()
{
int i,j,l=0;
freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
scanf("%d%d",&n,&k);
if(n%2==0 && k%2==0)
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
A[i][j]=++l;
if(n%2==0 && k%2==1)
for(i=1;i<n;i+=2,l+=2*n)
{
for(j=1;j<n;++j) A[i][j]=l+j+1;
A[i][j]=l+2*n;
A[i+1][1]=l+1;
for(j=2;j<=n;++j) A[i+1][j]=l+n+j-1;
}
if(n%2==1 && k%2==0)
{
for(j=1;j<n;j+=2)
for(i=1;i<=n;++i)
A[i][j]=++l, A[i][j+1]=++l;
for(i=1;i<=n;++i) A[i][n]=++l;
}
if(n%2==1 && k%2==1)
{
for(j=1;j<=n;++j)
for(i=1;i<=n;++i)
A[i][j]=++l;
A[1][k]=(A[1][k-1]+A[n][k+1]>>1)-n/2*2;
if(A[1][k]%2) --A[1][k];
for(i=2;i<=n;++i) A[i][k]=A[i-1][k]+2;
for(i=A[1][k]-A[1][k-1]+1;i<=n;++i)
A[i][k-1]=A[i-1][k-1]+2;
for(i=n-A[n][k+1]+A[n][k];i>0;--i)
A[i][k+1]=A[i+1][k+1]-2;
}
for(i=1;i<=n;++i)
{
for(j=1;j<n;++j)
printf("%d ",A[i][j]);
printf("%d\n",A[i][j]);
}
return 0;
}