Cod sursa(job #234102)

Utilizator Robert_MarksonTiberiu Popa Robert_Markson Data 19 decembrie 2008 22:54:22
Problema Tablete Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>

void for_even(FILE*, int, int), for_odd(FILE*, int, int);

int main() {
FILE *f;
int n, k;

f = fopen("tablete.in", "rt");

fscanf(f, "%d", &n);
fscanf(f, "%d", &k);

fclose(f);

f = fopen("tablete.out", "wt");

if(n%2)
	for_odd(f, n, k);
else
	for_even(f, n, k);

fclose(f);


return 0;
}

void for_even(FILE *f, int n, int k) {
	int i, j;
	
	if(k%2) {
		for(i = 0; i < n/2; i++) {
			for(j = 2; j <= n; j++)
				fprintf(f, "%d ", (i<<1)*n + j);
			fprintf(f, "%d\n", (i<<1)*n + (n<<1));
			fprintf(f, "%d ", (i<<1)*n + 1);
			for(j = 1; j < n; j++)
				fprintf(f, "%d ", ((i<<1)+1)*n + j);
			fprintf(f, "\n");
		}
	} else {
			for(i = 0; i < n; i++) {
				for(j = 1; j <= n; j++)
					fprintf(f, "%d ", i*n+j);
				fprintf(f, "\n");
		}
	}
}

void for_odd(FILE *f, int n, int k) {
	int i, j;
	
	if(k%2) {
		
	} else {
		for(i = 0; i < n/2; i++) {
			for(j = 1; j < n; j++)
				fprintf(f, "%d ", (i<<1)*n + j);
			fprintf(f, "%d\n", (i<<1)*n + (n<<1));
			for(j = 0; j < n; j++)
				fprintf(f, "%d ", ((i<<1)+1)*n + j);
			fprintf(f, "\n");
		}
		for(j = 1; j <= n; j++)
			fprintf(f, "%d ", (i<<1)*n+j);
		fprintf(f, "\n");
	}
}