Cod sursa(job #705789)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 4 martie 2012 22:50:58
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <bitset>

#define NMax 1005

using namespace std;

int N, K, M[NMax][NMax];
bitset <NMax*NMax> Used;

void Solve ()
{
	for (int i=1; i<=N; ++i)
	{
		M[i][K]=i*K;
		if (M[i][K]&1) ++M[i][K];
		Used[M[i][K]]=1;
	}
	int X=1;
	for (int i=1; i<=N; ++i)
	{
		for (int j=1; j<K; ++j)
		{
			for (; Used[X]; ++X);
			M[i][j]=X++;
		}
	}
	for (int i=1; i<=N; ++i)
	{
		for (int j=K+1; j<=N; ++j)
		{
			for (; Used[X]; ++X);
			M[i][j]=X++;
		}
	}
}

void Read ()
{
	freopen ("tablete.in", "r", stdin);
	scanf ("%d %d", &N, &K);
}

void Print ()
{
	freopen ("tablete.out", "w", stdout);
	for (int i=1; i<=N; ++i)
	{
		for (int j=1; j<=N; ++j)
		{
			printf ("%d ", M[i][j]);
		}
		printf ("\n");
	}
}

int main ()
{
	Read ();
	Solve ();
	Print ();
	return 0;
}