Cod sursa(job #129388)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 29 ianuarie 2008 11:48:34
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

long piesa=0,a[502][502];
int i,j;

void pave(int x1,int y1,int x2,int y2){
     int n,m,min,p2;
     piesa++;
     n=x2-x1+1;m=y2-y1+1;
     min=n;
     if (m<n)min=m;
     p2=1;
     while (p2*2<=min)
           p2*=2;
     for (i=x1;i<x1+p2;i++)
         for (j=y1;j<y1+p2;j++)
             a[i][j]=piesa;
     if (x1+p2-1<x2)pave(x1+p2,y1,x2,y2);
     if (y1+p2-1<y2)pave(x1,y1+p2,x1+p2-1,y2);
}

int main(){
    freopen("piese.in","r",stdin);
    freopen("piese.out","w",stdout);
    
    int n,m;
    
    scanf("%ld %ld",&n,&m);
    
    pave (1,1,n,m);
    printf("%ld\n",piesa);
    for (i=1;i<=n;i++){
        for (j=1;j<=m;j++)
            printf("%ld ",a[i][j]);
        printf("\n");
    }
    
return 0;
}