Cod sursa(job #212488)

Utilizator tamicTamas Iulia tamic Data 5 octombrie 2008 17:46:47
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>

FILE *fin,*fout;
int p2[10]={1,2,4,8,16,32,64,128,256,501};
int a[510][510];
long i,j,n,m,nr;

void umple(int x1,int y1,int x2,int y2){
	int i,j,latx,laty,c,latmin;
   if(x1<=n && x2<=n && y1<=m && y2<=m)
   	if(x1<=x2 && y1<=y2){
      	latx=x2-x1+1;
         laty=y2-y1+1;
         latmin=latx<laty?latx:laty;
         for(j=0;j<=9&&p2[j]<=latmin;j++);
         j--;
         nr++;
         for(i=x1;i<=x1+p2[j]-1;i++)
         	for(c=y1;c<=y1+p2[j]-1;c++) a[i][c]=nr;
         umple(x1,y1+p2[j],x1+p2[j]-1,y2);
         umple(x1+p2[j],y1,x2,y2);
      }
}

int main(){
	fin=fopen("piese.in","r");
   fout=fopen("piese.out","w");
   fscanf(fin,"%ld%ld",&n,&m);
   nr=0;
   umple(1,1,n,m);
   fprintf(fout,"%ld\n",nr);
   for(i=1;i<=n;i++){
   	for(j=1;j<=m;j++)
      	fprintf(fout,"%ld ",a[i][j]);
      fprintf(fout,"\n");
   }
   fclose(fin); fclose(fout);
   return 0;
}