Mai intai trebuie sa te autentifici.
Cod sursa(job #252021)
Utilizator | Data | 3 februarie 2009 20:01:02 | |
---|---|---|---|
Problema | Tablete | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.9 kb |
#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);
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);
return 0;
}