Cod sursa(job #447688)

Utilizator bog29Antohi Bogdan bog29 Data 30 aprilie 2010 14:37:12
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream>
#define dmax 503
using namespace std;
ifstream in("piese.in");
ofstream out("piese.out");

int n,m,mat[dmax][dmax],sol;
const int pw[]={1,2,4,8,16,32,64,128,256};

void fill(int x,int y,int xx,int yy)
{	int d1,d2,l,i,j,k;
	if(x > xx || y > yy)
		return;
	sol++;
	d1=xx-x+1;
	d2=yy-y+1;
	l=min(d1,d2);
	for(i=0;i<=8;i++)
		if(pw[i] <= l)
			k=pw[i];
	for(i=x;i<x+k;i++)
		for(j=y;j<y+k;j++)
			mat[i][j]=sol;
	fill(x+k,y,xx,y+k-1);
	fill(x,y+k,xx,yy);	
}

int main()
{	int i,j;
	in>>n>>m;
	in.close();
	fill(1,1,n,m);
	out<<sol<<'\n';
	for(i=1;i<=n;i++)
	{	for(j=1;j<=m;j++)
			out<<mat[i][j]<<" ";
		out<<'\n';
	}
	out.close();	
	return 0;
}