Cod sursa(job #237350)

Utilizator neagu_raresNeagu Rares Florian neagu_rares Data 29 decembrie 2008 16:34:51
Problema Tablete Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <stdio.h>

long n,k,a[1001][1001];

void parpar()
{
	int i,j,cate=0;
    for (i=1;i<=n;i++)
	{
		for (j=1;j<=k;j++)
		{
			a[i][j]=++cate;
		}
	}
	for (i=1;i<=n;i++)
		for (j=k+1;j<=n;j++)
    		a[i][j]=++cate;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=n;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}
}
	
void parimp()
{
	int i,j,cate=0;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<k;j++)
		{
			a[i][j]=++cate;
		}
		a[i][j]=++cate+1;
		i++;
		cate-=2;
		for (j=1;j<k;j++)
		{
			a[i][j]=(cate+=2);
		}
		a[i][j]=++cate;
	}
	for (i=1;i<=n;i++)
		for (j=k+1;j<=n;j++)
			a[i][j]=++cate;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=n;j++)
			printf("%ld ",a[i][j]);
		printf("\n");
	}
}

void impimp()
{
	int i,j,cate=0;
	for (i=1;i<=n-1;i++)
	{
		for (j=1;j<k;j++)
		{
			a[i][j]=++cate;
		}
		a[i][j]=++cate+1;
		i++;
		cate-=2;
		for (j=1;j<k;j++)
		{
			a[i][j]=(cate+=2);
		}
		a[i][j]=++cate;
	}
	//aici fac ultima linie
	cate=(n-1)*k;
	for (j=1;j<k;j++)
		a[n][j]=++cate;
	cate=n*k+1;
	a[n][j]=cate;
	cate--;
	for (i=1;i<=n;i++)
		for (j=k+1;j<=n;j++)
			a[i][j]=++cate;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=n;j++)
			printf("%ld ",a[i][j]);
		printf("\n");
	}

}
int main()
{
	freopen("tablete.in","r",stdin);
	freopen("tablete.out","w",stdout);
	scanf("%ld %ld",&n,&k);
	if (k%2==0)
		parpar(); 
	else
		if (n%2==0 && k%2==1)
			parimp(); 
		else
			impimp();
	return 0;
}