Cod sursa(job #232743)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 15 decembrie 2008 23:57:13
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>

int N, K, a[1005][1005];

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

	scanf("%d %d",&N,&K);
	int i, j, nr = N * N + 1, ok = 0, r;

	for (i = N; i >= 1; i--)
	{
		if (ok)
		{
			a[i][N] = nr; 
			nr -= 2;
			j = N - 1;
			ok = 0;
		}
		else 
		{
			nr--;
			j = N;
		}

		for (; j > K; j--)
			a[i][j] = nr--;
		if (nr % 2){  a[i][K] = nr - 1; ok = 1;}
		else a[i][K] = nr;
	}
	if (ok) r = nr;
	nr = 1; if (nr == r) nr++;
	for (i = 1; i < N; i++)
		for (j = 1; j < K; j++)
		{
			a[i][j] = nr;
			nr++;
			if (nr == r) nr++;
		}
	if (ok) a[N][1] = r;
	for (j = ok ? 2 : 1; j < K; j++)
		a[N][j] = nr++;

	for (i = 1; i < K - 1; i++)
		if (a[N][i] > a[N][i + 1])
		{
			j = a[N][i];
			a[N][i] = a[N][i + 1];
			a[N][i + 1] = j;
		}

	for (i = 1; i <= N; i++) 
	{
		for (j = 1; j <= N; j++) printf("%d ",a[i][j]);
		printf("\n");
	}
	
	return 0;
}