Cod sursa(job #2524606)

Utilizator davidcotigacotiga david davidcotiga Data 15 ianuarie 2020 21:58:25
Problema Tablete Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <fstream>

using namespace std;

ifstream f("tablete.in");
ofstream g("tablete.out");

const int NMAX = 1005;
int n, k, mat[NMAX][NMAX];

void afisaremat() {
	int i, j;
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++)
			g << mat[i][j] << " ";
		g << "\n";
	}
}

int main() {
	int i, j, value;
	f >> n >> k;
	value = 1;
	int modn = n % 2, modk = k % 2, inext;
	if (modk == 0 && modn == 0) {

		for (i = 1; i <= n; i++)
			for (j = 1; j <= n; j++) {
				mat[i][j] = value;
				value++;
			}
		afisaremat();
		return 0;
	}
	if (modk == 1 && modn == 0) {
		for (i = 1; i <= n; i += 2) {
			inext = i + 1;
			mat[inext][1] = value;
			value++;
			for (j = 1; j < n; j++) {
				mat[i][j] = value;
				value++;
			}
			for (j = 2; j <= n; j++) {
				mat[inext][j] = value;
				value++;
			}
			mat[i][n] = value;
			value++;

		}

		afisaremat();
		return 0;
	}
	if (modk == 0 && modn == 1) {
		for (i = 1; i < n; i += 2) {
			inext = i + 1;
			for (j = 1; j < n; j++) {
				mat[i][j] = value;
				value++;
			}
			for (j = 1; j <= n; j++) {
				mat[inext][j] = value;
				value++;
			}
			mat[i][n] = value;
			value++;

		}

		for (j = 1; j <= n; j++) {
			mat[n][j] = value;
			value++;
		}

		afisaremat();
		return 0;
	}


	for (i = 1; i < n; i += 2) {
		inext = i + 1;
		mat[inext][1] = value;
		value++;
		for (j = 1; j <= n; j++) {
			mat[i][j] = value;
			value++;
		}
		for (j = 2; j <= n; j++) {
			mat[inext][j] = value;
			value++;
		}
	}
	value--;
	mat[n - 1][n] = n * n;

	for (j = 1; j <= n; j++) {
		mat[n][j] = value;
		value++;
	}
	afisaremat();



	return 0;
}