Pagini recente » Cod sursa (job #283781) | Cod sursa (job #2546726) | Cod sursa (job #194653) | Cod sursa (job #1319031) | Cod sursa (job #238441)
Cod sursa(job #238441)
#include<stdio.h>
#define InFile "tablete.in"
#define OutFile "tablete.out"
#define Nmax 1000
int n,k,uz[Nmax*Nmax];
long a[Nmax][Nmax],nr,nr2;
int main()
{
FILE *fin=freopen(InFile,"rt",stdin),*fout=freopen(OutFile,"wt",stdout);
scanf("%ld %ld",&n,&k);
fclose(fin);
int i,j,ok;
for(i=1;i<=n;i++)
{ok=1; nr=(i*k%2==0)?(i*k):(i*k+1);
do
{if(!ok) nr+=2;
ok=1;
if(uz[nr]) while(uz[nr]) nr+=2;
a[i][k]=nr; uz[nr]=1; ;
for(j=k-1;j>=1&&ok;j--)
{nr2=a[i][j+1]-(k-j);
if(uz[nr2]) while(uz[nr2]) nr2--;
else {a[i][j]=nr2; uz[nr2]=1;}
if(nr<=1&&j>1) ok=0;
else {a[i][j]=nr2; uz[nr2]=1;}
}
}while(ok==0);
}
for(i=1;i<=n;i++)
{ok=1;nr=0;
for(j=1;j<=k;j++) printf("%ld ",a[i][j]);
for(j=i*k;j<=n*n&&ok;j++)
{if(!uz[j]) {printf("%ld ",j);nr++; uz[j]=1;}
if(nr==n-k) ok=0;
}
printf("\n");
}
fclose(fout);
return 0;
}