Pagini recente » Rating Serb Sergiu (SerbSergiu) | Cod sursa (job #1772954) | Cod sursa (job #2451083) | Cod sursa (job #2904595) | Cod sursa (job #735735)
Cod sursa(job #735735)
#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 ( !(N%2) && !(K%2) )
for (int i=1;i<=N;++i)
for (int j=1;j<=K;++j)
A[i][j]=(i-1)*N+j,
Ok[(i-1)*N+j]=true;
if ( !(N%2) && (K%2) )
for (int i=1;i<=N;++i)
{
for (int j=1;j<=K;++j)
A[i][j]=(i-1)*(N-1)+j,
Ok[(i-1)*(N-1)+j]=true;
if ( !(i%2) )
swap(A[i][1],A[i-1][K]);
}
if ( (N%2) && (K%2) )
{
for (int i=1;i<=N-1;++i)
{
for (int j=1;j<=K;++j)
A[i][j]=(i-1)*N+j,
Ok[(i-1)*N+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;
A[1][K+1]=N*K;
Ok[N*K]=true;
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';
}
}