Cod sursa(job #348725)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 16 septembrie 2009 18:16:02
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<cstdio>
#define M 1001
short int n,m;
int a[M][M];
void citire()
{
	freopen("tablete.in","r",stdin);
	freopen("tablete.out","w",stdout);
	scanf("%hd%hd",&n,&m);
}
void matrice1()
{
	int num=1;
	for (int i=1; i<=n; ++i)
		for (int j=1; j<=m; ++j)
		{
			a[i][j]=num;
			++num;
		}
	for (int i=1;i<=n; ++i)
		for (int j=m+1; j<=n; ++j)
		{
			a[i][j]=num;
			++num;
		}
}
void matrice()
{
	int num=1,j;
	for (int i=1; i<=n; ++i)
	{
		if (i&1)
		{
			j=1;
			num=a[i-1][m]+1;
		}
		else
		{
			a[i][1]=a[i-1][m-1]+1;
			a[i][2]=a[i][1]+2;
			num=a[i][2]+1;
			j=3;
		}
		for (;j<m; ++j)
		{
			a[i][j]=num;
			++num;
		}
		if (i&1)
			a[i][m]=a[i][m-1]+2;
		else
			a[i][m]=a[i][m-1]+1;
	}
	if ((n*m)&1)
		a[1][m+1]=a[n][m]-1;
	num=a[n][m]+1;
	for (int i=1;i<=n; ++i)
		for (int j=m+1; j<=n; ++j)
			if (!a[i][j])
			{
				a[i][j]=num;
				++num;
			}
}
void afis()
{
	for(int i=1; i<=n; ++i)
	{
		for (int j=1; j<=n; ++j)
			printf("%d ",a[i][j]);
		printf("\n");
	}
}
int main()
{
	citire();
	if (m&1)
		matrice();
	else
		matrice1();
	afis();
	return 0;
}