Cod sursa(job #2524604)

Utilizator davidcotigacotiga david davidcotiga Data 15 ianuarie 2020 21:57:06
Problema Tablete Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.83 kb
#include <fstream>

using namespace std;

ifstream cin("tablete.in");
ofstream cout("tablete.out");

const int MAX = 1005;

// 0 e liber, iar 1 ocupat

int main() {
	int n, k;
	int v[MAX][MAX];

	cin >> n >> k;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			cin >> v[i][j];

	int ind = 1;
	if (k % 2 == 0) {
		for (int i = 1; i <= n; ++i)
			for (int j = 1; j <= k; ++j) {
				v[i][j] = ind;
				ind++;
			}
		for (int i = 1; i <= n; ++i)
			for (int j = k + 1; j <= n; ++j) {
				v[i][j] = ind;
				ind++;
			}
	}
	else if (k % 2 == 1 && n % 2 == 0) {
		ind = 1;
		int index = 0;
		for (int DE = 1; DE <= n / 2; ++DE) {
			for (int j = 1; j <= k - 1; ++j) {
				v[1 + index][j] = ind;
				ind++;
			}
			v[1 + index][k] = ind + 1;
			v[2 + index][1] = ind;
			ind += 2;

			for (int j = 2; j <= k; ++j) {
				v[2 + index][j] = ind;
				ind++;
			}
			index += 2;
		}
		for (int i = 1; i <= n; ++i)
			for (int j = k + 1; j <= n; ++j) {
				v[i][j] = ind;
				ind++;
			}
	}
	else if (k % 2 == 1 && n % 2 == 1) {
		ind = 1;
		int index = 0;
		for (int DE = 1; DE <= n / 2; ++DE) {
			for (int j = 1; j <= k - 1; ++j) {
				v[1 + index][j] = ind;
				ind++;
			}
			v[1 + index][k] = ind + 1;
			v[2 + index][1] = ind;
			ind += 2;

			for (int j = 2; j <= k; ++j) {
				v[2 + index][j] = ind;
				ind++;
			}
			index += 2;
		}
		for (int j = 1; j <= k - 1; ++j) {
			v[n][j] = ind;
			ind++;
		}
		v[n][k] = ind + 1;
		ind++;
		v[1][k + 1] = ind - 1;

		for (int j = k + 2; j <= n; ++j) {
			v[1][j] = ind;
			ind++;
		}
		for (int i = 2; i <= n; ++i)
			for (int j = k + 1; j <= n; ++j) {
				v[i][j] = ind;
				ind++;
			}
	}

	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= n; ++j)
			cout << v[i][j] << " ";
		cout << "\n";
	}


	return 0;
}