Cod sursa(job #131429)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 3 februarie 2008 19:32:35
Problema Piese Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>

using namespace std;

int a[10]={1,2,4,8,16,32,64,128,256,512},n,m,e,b[501][501];

void citire()
{
    freopen("piese.in","r",stdin);
    scanf("%d%d", &n, &m);
    fclose(stdin);
}

void rezolvare(int x1, int y1, int x2, int y2)
{
    //w=minim(x2-x1+1);
    int w=x2-x1+1<?y2-y1+1;
    int q=0;
    for (int i=0; i<=8; i++)
        if (a[i]<=w && a[i+1]>w)
        {
            q=a[i];
            break;
        }
    ++e;
    int  o=0;
    for (int i=x1; i<x1+q; i++)
        for (int j=y1; j<y1+q; j++)
        {
            b[i][j]=e;
            o=1;
        }
    if (o==0)
        --e;
    if (q)
    {
        rezolvare(x1,y1+q,x1+q-1,y2);
        rezolvare(x1+q,y1,x2,y2);
    }
}

void afisare()
{
    freopen("piese.out","w",stdout);
    printf("%d\n",e);
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=m; j++)
            printf("%d ",b[i][j]);
        printf("\n");
    }
    fclose(stdout);
}

int main()
{
    citire();
    rezolvare(1,1,n,m);
    afisare();
    return 0;
}