Cod sursa(job #128040)

Utilizator coderninuHasna Robert coderninu Data 25 ianuarie 2008 22:30:55
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define Nmax 501

int d[Nmax][Nmax], rez, i, j, M, k, n, m;

void a(int,int,int,int);
inline int min(int x, int y) { return x<y?x:y; }


int main()
{
	freopen("piese.in", "r", stdin);
	scanf("%d %d\n", &n, &m);
	fclose(stdin);
	freopen("piese.out", "w", stdout);
	a(1,1,n,m);
	printf("%d\n", rez);
	for (i=1; i<=n; i++)
	{
		for (j=1; j<=m; j++)
			printf("%d ", d[i][j]);
		printf("\n");
	}
	fclose(stdout);
	return 0;
}

void a(int x1, int y1, int x2, int y2)
{
	int k;
	M=min(x2-x1+1,y2-y1+1);
	for (k=1; (k<<1)<=M; k<<=1);
	for (++rez,i=x1; i<x1+k; i++)
		for (j=y1; j<y1+k; j++)
			d[i][j]=rez;
	if (x1+k<=x2) a(x1+k,y1,x2,y1+k-1);
	if (y1+k<=y2) a(x1,y1+k,x1+k-1,y2);
	if (x1+k<=x2 && y1+k<=y2) a(x1+k,y1+k,x2,y2);
}