Cod sursa(job #231755)

Utilizator AndreyPAndrei Poenaru AndreyP Data 14 decembrie 2008 12:54:06
Problema Tablete Scor 90
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 5-8 Marime 1.1 kb
#include<stdio.h>
int a[1002][1002];
int n,k;
int main()
{
	freopen("tablete.in","r",stdin);
	freopen("tablete.out","w",stdout);
	scanf("%d%d",&n,&k);
	if(!(k&1))
	{
		int aux=0;
		for(int i=0; i<n; i++)
		{
			for(int j=1; j<n; j++)
				printf("%d ",++aux);
			printf("%d\n",++aux);
		}
		return 0;
	}
	int cate=k;
	int aux=k+1;
	a[1][k]=aux;
	for(int i=2; i<=n; i++)
	{
		cate+=k;
		if(cate&1)
			a[i][k]=cate+1;
		else
			a[i][k]=cate;
		/*aux+=k;
		if(aux<cate)
			aux=cate;
		else
		if(aux>cate)
			a
		if(aux&1)
		{
			if(aux-1>=cate)
				aux--;
			else
				aux++;
		}
		a[i][k]=aux;*/
	}
	aux=k+1;
	int nr=0,r=1;
	a[n+1][k]=1<<30;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<k; j++)
		{
			++nr;
			if(nr==aux)
			{
				++nr;
				aux=a[++r][k];
			}
			a[i][j]=nr;
		}
	}
	for(int i=1; i<=n; i++)
	{
		for(int j=k+1; j<=n; j++)
		{
			++nr;
			if(nr==aux)
			{
				++nr;
				aux=a[++r][k];
			}
			a[i][j]=nr;
		}
	}
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<n; j++)
			printf("%d ",a[i][j]);
		printf("%d\n",a[i][n]);
	}
	return 0;
}