Cod sursa(job #254433)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 7 februarie 2009 12:05:43
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>


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

int N,M,A[505][505],cnt;

void rezolvare(int x1,int y1,int x2,int y2){

    int ln=x2-x1+1,col=y2-y1+1;
    if(!ln||!col)
        return ;
    int l=1;
    for(;l*2<=ln;l*=2);
    for(;l>col;l/=2);

    ++cnt;
    for(int i=x1;i<x1+l;i++)
        for(int j=y1;j<y1+l;j++)
            A[i][j]=cnt;
    rezolvare(x1,y1+l,x1+l-1,y2);
    rezolvare(x1+l,y1,x2,y2);
}

int main(){
    fscanf(fin,"%d %d",&N,&M);

    rezolvare(1,1,N,M);

    fprintf(fout,"%d\n",cnt);
    for(int i=1;i<=N;i++){
        for(int j=1;j<=M;j++)
            fprintf(fout,"%d ",A[i][j]);
        fprintf(fout,"\n");
    }

    fclose(fin);
    fclose(fout);
    return 0;
}