Cod sursa(job #1573354)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 19 ianuarie 2016 17:23:44
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
#include<stdio.h>
#include<iostream>
using namespace std;

#pragma warning(push)
#pragma warning(disable: 4996)

int a[1001][1001];
int b[1001][1001];
int N, K;

int nr_sarit;
bool am_sarit = false;

int main()
{
	freopen("tablete.in", "r", stdin);
	freopen("tablete.out", "w", stdout);

	cin >> N >> K;

	int nr_curent = 1;

	for (int i = 1; i <= N; ++i)
	{
		for (int j = 1; j <= N; ++j)
		{
			if (j == 1 && am_sarit)
			{
				b[i][j] = nr_sarit;
				continue;
			}
			else
			{
				if (j != K)
				{
					b[i][j] = nr_curent;
					nr_curent++;
				}
				else
				{
					if (nr_curent % 2 == 0)
					{
						b[i][j] = nr_curent;
						am_sarit = false;
						nr_curent++;
					}
					else
					{
						b[i][j] = nr_curent + 1;
						nr_sarit = nr_curent;
						am_sarit = true;
						nr_curent += 2;
					}
				}
			}
		}
	}

	am_sarit = false;

	// in cazul in care trebuia pus pe penultima linie ultima coloana N^2
	// pentru ca altfel e posibil sa trebuiasca sa sarim un numar si pe ultima linie ca sa avem par
	if (b[N][N] > N * N)
	{
		nr_curent = 1;

		for (int i = 1; i <= N; ++i)
		{
			for (int j = 1; j <= N; ++j)
			{
				if (j == 1 && am_sarit)
				{
					b[i][j] = nr_sarit;
					continue;
				}
				else if (i == N - 1 && j == N)
				{
					b[i][j] = N * N;
				}
				else
				{
					if (j != K)
					{
						b[i][j] = nr_curent;
						nr_curent++;
					}
					else
					{
						if (nr_curent % 2 == 0)
						{
							b[i][j] = nr_curent;
							am_sarit = false;
							nr_curent++;
						}
						else
						{
							b[i][j] = nr_curent + 1;
							nr_sarit = nr_curent;
							am_sarit = true;
							nr_curent += 2;
						}
					}
				}
			}
		}
	}

	for (int i = 1; i <= N; ++i)
	{
		for (int j = 1; j <= N; ++j)
		{
			cout << b[i][j] << " ";
		}

		cout << endl;
	}

	return 0;
}

#pragma warning(pop)