Cod sursa(job #231065)

Utilizator octavOctavian Voicu octav Data 14 decembrie 2008 11:23:54
Problema Tablete Scor 100
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 5-8 Marime 0.73 kb
#include <stdio.h>

void solve(int n, int k) {
	int i, j, tmp, last, remember, adjust;

	last = 0;
	remember = 0;
	adjust = (n * (n - 1) + k) % 2 == 1 ? 1 : 0;

	for (i = 0; i < n; i++) {
		if (remember) {
			tmp = remember;
			remember = 0;
		} else {
			tmp = ++last;
		}
		printf("%d", tmp);
		for (j = 1; j < n; j++) {
			if (adjust && i == n - 2 && j == n - 1) {
				tmp = n * n;
			} else {
				tmp = ++last;
				if (j == k - 1 && tmp % 2 == 1) {
					remember = tmp;
					tmp = ++last;
				}
			}
			printf(" %d", tmp);
		}
		printf("\n");
	}
}

int main()
{
	int n, k;

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

	scanf("%d %d", &n, &k);
	solve(n, k);

	return 0;
}