Cod sursa(job #325522)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 20 iunie 2009 23:54:41
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
int n,m,nr;
int v[502][502];

void read()
{
	freopen("piese.in","r",stdin);
	freopen("piese.out","w",stdout);
	scanf("%d%d",&n,&m);
}

inline int min(int a, int b)
{
	if(a<b)
		return a;
	return b;
}

void rec(int x1, int y1, int x2, int y2)
{
	if(min(x2-x1+1,y2-y1+1)<=0)
		return;
	nr++;
	int i,j,d,lim;
	lim=min(x2-x1+1,y2-y1+1);
	d=1;
	while(d<=lim)
	{
		d=d<<1;
	}
	d=d>>1;
	for(i=1;i<=d;i++)
		for(j=1;j<=d;j++)
			v[x1+i-1][y1+j-1]=nr;
	rec(x1, y1+d, x1+d-1, y2);
	rec(x1+d, y1, x2, y2);
}

int main()
{
	read();
	rec(1,1,n,m);
	int i,j;
	printf("%d\n",nr);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
			printf("%d ",v[i][j]);
		printf("\n");
	}
	return 0;
}