Cod sursa(job #243921)
Utilizator | Data | 14 ianuarie 2009 11:26:41 | |
---|---|---|---|
Problema | Tablete | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 2.65 kb |
#include <stdio.h>
int A[1005][1005];
int main()
{
int N,K;
freopen("tablete.in","r",stdin);
scanf("%d %d", &N,&K);
int p;
if (N%2==0 && K%2==1 && (K/2)%2==0)
p=(N*K)-(N+(K/2)+2);
else
if (N%2==1 && K%2==1 && (K/2)%2==0)
p=(N*K)-(N+(K/2));
else p=(N*K)-(N+(K/2)+1);
int i,j1,nr1;
int j,nr=1;
int frecv[1000000];
if (N%2==1 && K%2==0)
{
nr1=1;
for (i=1;i<=N;++i)
for (j1=1;j1<=K;++j1)
{
A[i][j1]=nr1;
nr1++;
}
for (i=1;i<=N;++i)
for (j1=K+1;j1<=N;++j1)
{
A[i][j1]=nr1;
nr1++;
}
}
else
{
for (i=1;i<=N;++i)
{
A[i][K]=p;
frecv[p]=1;
p+=2;
}
if (K%2==0)
{
for (i=1;i<=N;++i)
for (j=1;j<=N;++j)
{
A[i][j]=nr;
nr++;
}
}
else
{
for (i=1;i<=N;++i)
for (j=1;j<K;++j)
{
if (frecv[nr]==0)
{
A[i][j]=nr;
frecv[nr]=1;
}
else
{
while (frecv[nr]==1)
nr++;
A[i][j]=nr;
frecv[nr]=1;
}
nr++;
}
nr++;
for (i=1;i<=N;++i)
for (j=K+1;j<=N;++j)
{
if (frecv[nr]==0)
{
A[i][j]=nr;
frecv[nr]=1;
}
else
{
while (frecv[nr]==1)
nr++;
A[i][j]=nr;
frecv[nr]=1;
}
nr++;
}
}
}
freopen("tablete.out","w",stdout);
for (i=1;i<=N;++i)
{
for (j=1;j<=N;++j)
printf("%d ", A[i][j]);
printf("\n");
}
return 0;
}