Pagini recente » Cod sursa (job #2015555) | Cod sursa (job #2035869) | Cod sursa (job #813503) | Cod sursa (job #2030946) | Cod sursa (job #231091)
Cod sursa(job #231091)
#include <cstdio>
int a[1001][1001];
bool use[1000001];
int n, K;
void solve1() // n=par K=par
{
int i, j, k=0;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j) a[i][j]=++k;
}
void solve2() // n=par/impar, K=impar
{
int i, j, k,N=n*n;
a[1][K]=K+1;
use[a[1][K]]=1;
for(i=2;i<=n;++i)
if(i%2) a[i][K]=a[i-1][K]+K-1, use[a[i][K]]=1;
else a[i][K]=a[i-1][K]+K+1, use[a[i][K]]=1;
k=0;
for(i=1;i<=n;++i)
for(j=1;j<=K;++j)
if(!a[i][j])
{
++k;
while(use[k] && k<=N) ++k;
a[i][j]=k;
}
for(i=1;i<=n;++i)
for(j=K+1;j<=n;++j)
if(!a[i][j])
{
++k;
while(use[k] && k<=N) ++k;
a[i][j]=k;
}
}
void solve3() // n=impar, K=par
{
int i, j, k=0;
for(i=1;i<=n;++i)
for(j=1;j<=K;++j) a[i][j]=++k;
for(i=1;i<=n;++i)
for(j=K+1;j<=n;++j) a[i][j]=++k;
}
int main()
{
freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
scanf("%d %d\n", &n, &K);
if((n%2 == 0) && (K%2 == 0) ) solve1();
if((n%2 == 0) && (K%2)) solve2();
if((n%2) && (K%2)) solve2();
if((n%2) && (K%2 ==0)) solve3();
int i, j;
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}