Cod sursa(job #237427)

Utilizator azotlichidAdrian Vladu azotlichid Data 29 decembrie 2008 19:51:41
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <set>
using namespace std;

int a[1024][1024];
int N, K;
set<int> A;

inline void add(int x) { A.insert(x); }
inline int is(int x) { return A.find(x) != A.end(); }

void dump()
{
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j+1 < N; j++)
			fprintf(stdout,"%d ", a[i][j]);
		fprintf(stdout,"%d\n", a[i][N-1]);
	}
}

int main()
{
	freopen("tablete.in", "r", stdin);
	freopen("tablete.out", "w", stdout);
	scanf("%d %d", &N, &K);

	//fill the k'th column
	int x;
	for (int i = 0; i < N; i++)
	{
		x = (i+1)*K;
		if (x&1) ++x;
		a[i][K-1] = x;
		add(x);
	}
//	dump();
	x = 0;
	for (int i = 0; i < N; i++)
		for (int j = 0; j+1 < K; j++)
		{
			do ++x; while (is(x));
			a[i][j] = x;
		}
	for (int i = 0; i < N; i++)
		for (int j = K; j < N; j++)
		{
			do ++x; while (is(x));
			a[i][j] = x;
		}
	dump();
	return 0;
}