Cod sursa(job #128070)

Utilizator mithyPopovici Adrian mithy Data 26 ianuarie 2008 00:59:59
Problema Piese Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define NMax 500

int n, m, mmin=1;
int a[NMax][NMax];

FILE *f, *g;

void mat( int x1, int y1, int x2, int y2 )
{
	int min, pow, i, j;

	min = (x2-x1+1);
	if ( (y2-y1+1) < min )
		min = (y2-y1+1);

	if ( x1 >= n || y1 >= m ) 
		return;

	for ( pow = 1; pow <= min; pow = pow<<1 );
	pow = pow >> 1;

	if ( pow < 1 )
		return;

	for (i=x1; i<=x1+pow-1; i++)
	for (j=y1; j<=y1+pow-1; j++)
		a[i][j] = mmin;

	mmin++;
	
	mat(x1, y1+pow, x1+pow-1, y2);
	mat(x1+pow, y1, x2, y2);
}


int main()
{
	int i, j;

	f = fopen( "piese.in", "rt" );
	g = fopen( "piese.out", "wt" );

	fscanf( f, "%d %d", &n, &m );

 	mat( 0, 0, n-1, m-1 );


	fprintf( g, "%d\n", mmin-1 );

	for (i=0; i<n; i++)
	{
		for (j=0; j<m; j++)
			fprintf(g, "%d", a[i][j]);
		fprintf(g, "\n");
	}
	return 0;
}