Pagini recente » Cod sursa (job #2559024) | Cod sursa (job #2538676) | Cod sursa (job #190258) | Cod sursa (job #591216) | Cod sursa (job #431197)
Cod sursa(job #431197)
#include<stdio.h>
int n,k,q;
long a[1001][1001];
void make_par()
{
q=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=k;++j)
a[i][j]=++q;
for(int i=1;i<=n;++i)
for(int j=k+1;j<=n;++j)
a[i][j]=++q;
}
void make_imp_par()
{
int q=1,r=1;
for(int i=1;i<=n;i++)
{
if(r)
{
a[i][1]=r;
r=0;
for(int j=2;j<k;j++)
a[i][j]=++q;
if((q+1)%2==0)
a[i][k]=++q;
else
{
a[i][k]=q+2;
r=q+1;
q+=2;
}
continue;
}
for(int j=1;j<k;j++)
a[i][j]=++q;
if((q+1)%2==0)
a[i][k]=++q;
else
{
a[i][k]=q+2;
r=q+1;
q+=2;
}
}
for(int i=1;i<=n;i++)
for(int j=k+1;j<=n;j++)
a[i][j]=++q;
}
void make_imp_imp()
{
int q=1,r=1;
for(int i=1;i<n;i++)
{
if(r)
{
a[i][1]=r;
r=0;
for(int j=2;j<k;j++)
a[i][j]=++q;
if((q+1)%2==0)
a[i][k]=++q;
else
{
a[i][k]=q+2;
r=q+1;
q+=2;
}
continue;
}
for(int j=1;j<k;j++)
a[i][j]=++q;
if((q+1)%2==0)
a[i][k]=++q;
else
{
a[i][k]=q+2;
r=q+1;
q+=2;
}
}
for(int j=1;j<k;j++)
a[n][j]=++q;
if((q+1)%2==0)
a[n][k]=++q;
else
{
a[n][k]=q+2;
r=q+1;
q+=2;
}
a[1][k+1]=r;
for(int j=k+2;j<=n;j++)
a[1][j]=++q;
for(int i=2;i<=n;i++)
for(int j=k+1;j<=n;j++)
a[i][j]=++q;
}
void make_imp()
{
if(n%2==0)
make_imp_par();
else
make_imp_imp();
}
void afis()
{
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
printf("%d ",a[i][j]);
printf("\n");
}
}
int main()
{
freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
scanf("%d%d",&n,&k);
if(k%2==0)
make_par();
else
make_imp();
afis();
return 0;
}