Cod sursa(job #529998)

Utilizator CS-meStanca Marian Ciprian CS-me Data 6 februarie 2011 17:29:32
Problema Piese Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
FILE *fin, *fout;
int m,n,i,j,a[51][51],k,min,l,q,w;


int putere(int x){
int n=1;

while(n*2<=x){
	n*=2;
}


return n;
}




int main(){

	fin=fopen("piese.in","r");
	fout=fopen("piese.out","w");

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

	for(i=1;i<=m;i++){
		for(j=1;j<=n;j++){
			if(a[i][j]==0){
				k++;

				min=m-i+1;
				if(min>n-j+1){
					min=n-j+1;
				}

				l=putere(min);
				for(q=i;q<=i+l-1;q++){
					for(w=j;w<=j+l-1;w++){
						a[q][w]=k;
					}
				}
			}
		}
	}


	fprintf(fout,"%d\n",k);

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


	fclose(fout);
	fclose(fin);

return 0;
}