Cod sursa(job #305530)

Utilizator cotofanaCotofana Cristian cotofana Data 17 aprilie 2009 18:34:31
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <stdio.h>

int n, k;

int main()
{
	int i, j;
	freopen("tablete.in", "r", stdin);
	freopen("tablete.out", "w", stdout);
	scanf("%d %d\n", &n, &k);
	if (k%2==0)
	{
		for (i=1; i<=n; i++)
		{
			for (j=1; j<=n; j++)
				if (j<=k) printf("%d ", (i-1)*k+j);
				else printf("%d ", n*k+(i-1)*(n-k)+j-k);
			printf("\n");
		}
	}
	else
	{
		if (n%2==0)
		{
			for (i=1; i<=n; i++)
			{
				for (j=1; j<=n; j++)
					if (i%2)
						if (j==k) printf("%d ", i*k+1);
						else if (j<k) printf("%d ", (i-1)*k+j);
						else printf("%d ", n*k+(i-1)*(n-k)+j-k);
					else
						if (j==1) printf("%d ", (i-1)*k);
						else if (j<=k) printf("%d ", (i-1)*k+j);
						else printf("%d ", n*k+(i-1)*(n-k)+j-k);
				printf("\n");
			}
		}
		else
		{
			for (i=1; i<n; i++)
			{
				for (j=1; j<=n; j++)
					if (i%2)
						if (j==k) printf("%d ", i*k+1);
						else if (j<k) printf("%d ", (i-1)*k+j);
						else
							if (i==1 && j==k+1) printf("%d ", n*k);
							else printf("%d ", n*k+(i-1)*(n-k)+j-k);
					else
						if (j==1) printf("%d ", (i-1)*k);
						else if (j<=k) printf("%d ", (i-1)*k+j);
						else printf("%d ", n*k+(i-1)*(n-k)+j-k);
				printf("\n");
			}
			for (j=1; j<=n; j++)
				if (j==k) printf("%d ", n*k+1);
				else if (j<k) printf("%d ", (n-1)*k+j);
				else printf("%d ", (n-1)*(n-k)+j-k+n*k);
		}
	}
	return 0;
}