Cod sursa(job #120946)

Utilizator astronomyAirinei Adrian astronomy Data 7 ianuarie 2008 13:24:59
Problema Piese Scor Ascuns
Compilator cpp Status done
Runda Marime 0.84 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

#define MAXN 512

int N, M, K;
int A[MAXN][MAXN];

void baga(int x1, int y1, int x2, int y2)
{
    if(x2 < x1 || y2 < y1) return ;
    
    int i, j, k, b, len = min(x2-x1+1, y2-y1+1);

    for(k = 0; k <= 9; k++)
     if( (1<<k) <= len ) b = k;

    for(K++, i = x1; i <= x1+(1<<b)-1; i++)
     for(j = y1; j <= y1+(1<<b)-1; j++)
        A[i][j] = K;

    baga(x1, y1+(1<<b), x2, y2);
    baga(x1+(1<<b), y1, x2, y1+(1<<b)-1);
}

int main(void)
{
    freopen("piese.in", "rt", stdin);
    freopen("piese.out", "wt", stdout);

    scanf("%d %d\n", &N, &M);

    baga(1, 1, N, M);

    int i, j;
    for(printf("%d\n", K), i = 1; i <= N; i++, printf("\n"))
     for(j = 1; j <= M; j++)
        printf("%d ", A[i][j]);

    return 0;
}