Cod sursa(job #377790)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 26 decembrie 2009 12:50:33
Problema Piese Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#include<math.h>
#define DIM 505
int n,m,k,a[DIM][DIM];
int min (int x,int y)
{
    if(x>y)
        return y;
    return x;
}
int check (int x,int y,int lat)
{
    if(x+lat-1>n || y+lat-1>m)
        return 0;
    return 1;
}
void fill (int x,int y,int lat)
{
    int i,j;
    for(i=x;i<=x+lat-1;++i)
        for(j=y;j<=y+lat-1;++j)
            a[i][j]=k+1;
}
int main ()
{
    freopen("piese.in","r",stdin);
    freopen("piese.out","w",stdout);
    int lat,i,j;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
            if(a[i][j]==0)
                for(lat=1<<((int)sqrt(min(n-i+1,m-j+1)));lat;lat/=2)
                    if(check(i,j,lat))
                    {
                        fill(i,j,lat);
                        ++k;break;
                    }
    printf("%d\n",k);
    for(i=1;i<=n;++i,printf("\n"))
        for(j=1;j<=m;++j)
            printf("%d ",a[i][j]);
    return 0;
}