Cod sursa(job #127254)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 23 ianuarie 2008 17:51:42
Problema Piese Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream.h>
#include <math.h>

ifstream fin("piese.in");
ofstream fout("piese.out");

int n,m,a[503][503],min,ok=1;
void citire()
{
   fin>>n>>m;
}


void f (int x1,int y1,int x2,int y2)
{
if (x1 >n || y1>m)
   return ;

int mi=x2-x1+1;

if (y2-y1+1<mi)
   mi=y2-x1+1;
int k=-1;
while (pow(2,k)<=mi)
      k++;
if (k>0)           {
  min++;
  k--;
  for (int i=x1;i<x1+pow(2,k);i++)
      for (int j=y1;j<y1+pow(2,k);j++)
	  a[i][j]=min;
  f (x1,y1+pow(2,k),x1+pow(2,k)-1,y2);
  f (x1+pow(2,k),y1,x2,y2);
  }
}

void afisare()
{
   fout<<min<<"\n";
   for (int i=1;i<=n;i++)
   {
      for (int j=1;j<=m;j++)
	 fout<<a[i][j]<<" ";
      fout<<"\n";
   }
}

int main()
{
   citire();
   f(1,1,n,m);
   afisare();
   fin.close();
   fout.close();
   return 0;
}