Cod sursa(job #984616)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 14 august 2013 22:09:37
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
using namespace std;

ifstream fi ("tablete.in");
ofstream fo ("tablete.out");

const int dim = 1005;
int N, K, A[dim][dim], nr = 1;

void cit ()
{
	fi >> N >> K;
}

void rez ()
{
	int i, j;
	for (i = 1; i <= N; i++)
	{
		if (A[i][1] == 0) A[i][1] = nr++;
		for (j = 2; j < K; j++) A[i][j] = nr++;
		
		if (nr & 1)	
		{
			if (i+1 <= N) A[i+1][1] = nr++;
			else A[1][K+1] = nr++;
		}
		A[i][K] = nr++;
	}
	for (i = 1; i <= N; i++)
	{
		for (j = K + 1; j <= N; j++)
			if (A[i][j] == 0)
				A[i][j] = nr++;
	}
}

void ver ()
{
	int i, j;
	if (nr != N * N + 1) assert (0);
	for (i = 1; i <= N; i++)
	{
		if (!(A[i][K] & 1)) assert (0);
		for (j = 2; j <= N; j++)
			if (A[i][j] < A[i][j-1])
				assert (0);
	}
}

void afi ()
{
	int i, j;
	for (i = 1; i <= N; i++)
	{
		for (j = 1; j <= N; j++)
			fo << A[i][j] << ' ';
		fo << '\n';
	}
}

int main ()
{
	cit ();
	rez ();
	afi ();
	
	return 0;
}