Cod sursa(job #717453)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 19 martie 2012 22:16:41
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
using namespace std;

ifstream f("piese.in"); ofstream g("piese.out");

int v[505][505];
int i, j, n, m, p;

void acopera (int x1, int y1, int x2, int y2){
	int d, k;
	
	p++;
	k=min(x2-x1+1, y2-y1+1);
	d=1;
	while (d*2<=k) d*=2;
	
	for (i=x1; i<x1+d; i++)	for (j=y1; j<y1+d; j++) v[i][j]=p;
	
	if (x1+d-1!=x2) acopera (x1+d, y1, x2, y1+d-1);
	if (y1+d-1!=y2) acopera (x1, y1+d, x1+d-1, y2);
	if (x1+d-1!=x2 && y1+d-1!=y2) acopera (x1+d, y1+d, x2, y2);
}
  

int main(){
	f>>n>>m;
	acopera (1,1, n, m);
	
	g<<p<<"\n";
	for (i=1; i<=n; i++){
		for (j=1; j<=m; j++) g<<v[i][j]<<" ";
		g<<"\n";
	}
}