Pagini recente » Cod sursa (job #2215654) | Cod sursa (job #1840007) | Cod sursa (job #1820329) | Cod sursa (job #1260555) | Cod sursa (job #735742)
Cod sursa(job #735742)
#include <fstream>
using namespace std;
ifstream F("tablete.in");
ofstream G("tablete.out");
#define Nm 1005
int N,K;
int A[Nm][Nm];
bool Ok[Nm*Nm];
int main(void)
{
F>>N>>K;
if ( K%2==0 )
for (int i=1;i<=N;++i)
for (int j=1;j<=K;++j)
A[i][j]=(i-1)*K+j,
Ok[(i-1)*K+j]=true;
if ( N%2==0 && K%2==1 )
for (int i=1;i<=N;++i)
{
for (int j=1;j<=K;++j)
A[i][j]=(i-1)*K+j,
Ok[(i-1)*K+j]=true;
if ( !(i%2) )
swap(A[i][1],A[i-1][K]);
}
if ( N%2==1 && K%2==1 )
{
for (int i=1;i<=N-1;++i)
{
for (int j=1;j<=K;++j)
A[i][j]=(i-1)*K+j,
Ok[(i-1)*K+j]=true;
if ( !(i%2) )
swap(A[i][1],A[i-1][K]);
}
for (int i=1;i<=K-1;++i)
A[N][i]=(N-1)*K+i,
Ok[(N-1)*K+i]=true;
A[N][K]=N*K+1;
Ok[N*K+1]=true;
}
int j=1;
while ( Ok[j] ) ++j;
for (int i=1;i<=N;++i)
for (int ii=1;ii<=N;++ii)
if ( !A[i][ii] )
{
A[i][ii]=j;
Ok[j]=true;
while ( Ok[j] ) ++j;
}
int i;
for (i=1;i<=N;++i)
{
for (j=1;j<=N;++j)
G<<A[i][j]<<' ';
G<<'\n';
}
}