Cod sursa(job #265217)

Utilizator cristiprgPrigoana Cristian cristiprg Data 23 februarie 2009 16:41:22
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <cstdio>
int n,k, a[1001][1001];

int main ()
{
	FILE *f = fopen("tablete.in", "r");
	fscanf (f,"%d%d", &n, &k);
	fclose(f);

	int i,j, nr=0;
	if (k%2 == 0)  //daca n par
	{
		for (i = 1; i <= n; i++)
			for (j = 1; j <= k; j++)
				nr = a[i][j] = ++nr;

		for (i = 1; i <= n; i++)
			for (j = k+1; j <= n; j++)
				a[i][j] = ++nr;
	}


	if (k%2 == 1)
	{
		for (i = 1; i <= n; i++)
			for (j = 1; j <= k; j++)
			{
				if (j == 1 && i != 1)
				{
					a[i][j] = nr + 1;
					if (i % 2 == 0)
						nr +=2;
					else
						nr++;
				}

				else
					if (j != k)
						a[i][j] = ++nr;

				if (j == k)
					if ((nr + 1) % 2 == 1)
						a[i][j] = nr + 2;
					else
						a[i][j] = ++nr;


			}
			//manual prima linie
			if (n % 2 == 1)
			{
				a[1][k+1] = ++nr;
				nr++;
				for (i = k + 2; i <= n; i++)
					a[1][i] = ++nr;

				for (i = 2; i <= n; i++)
					for (j = k + 1; j <= n; j++)
						a[i][j] = ++nr;
			}

			else
				{
					for (i = 1; i <= n; i++)
						for (j = k + 1; j <= n; j++)
							a[i][j] = ++nr;
				}

	}


	f = fopen("tablete.out", "w");
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n; j++)
			fprintf(f, "%d ", a[i][j]);
		fprintf(f, "\n");
	}

	//fprintf(f, "nr = %d\n", nr);
	fclose(f);
	return 0;
}