Cod sursa(job #1896645)

Utilizator antanaAntonia Boca antana Data 28 februarie 2017 20:12:22
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>

#define MAXN 501

using namespace std;

int color, v[MAXN][MAXN], n, m;

inline void doColor(int x, int y, int edge)
{
    color++;
    int i, j;
    for(i=x; i<=x+edge-1; ++i)
        for(j=y; j<=y+edge-1; ++j)
            v[i][j] = color;
}

int main()
{
    freopen("piese.in", "r", stdin);
    freopen("piese.out", "w", stdout);

    int i, j, edge = (1<<8);

    scanf("%d%d", &n, &m);

    while(edge >= 1) {
        if(edge <= n && edge <= m) {
            for(i=1; i<=n-edge+1; ++i)
                for(j=1; j<=m-edge+1; ++j)
                    if(!v[i][j] && !v[i][j+edge-1] && !v[i+edge-1][j] && !v[i+edge-1][j+edge-1])
                        doColor(i, j, edge); }
        edge >>= 1; }

    printf("%d\n", color);

    for(i=1; i<=n; ++i){
        for(j=1; j<=m; ++j)
            printf("%d ", v[i][j]);
        printf("\n"); }

    return 0;
}