Cod sursa(job #2902429)

Utilizator divadddDavid Curca divaddd Data 16 mai 2022 12:21:31
Problema Piese Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define MAX 502
using namespace std;
int n,m,a[MAX][MAX];

ifstream fin("piese.in");
ofstream fout("piese.out");

bool inauntru(int x, int y){
    return ( (1 <= x && x <= n) && (1 <= y && y <= m) );
}

void fillMat(int startx, int starty, int stopx, int stopy, int val){
    for(int i = startx; i <= stopx; i++){
        for(int j = starty; j <= stopy; j++){
            a[i][j] = val;
        }
    }
}

int main()
{
    fin >> n >> m;
    int maxLen = log2(max(n, m));
    int ans = 0;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            if(a[i][j] == 0){
                ans++;
                int len = 1<<maxLen;
                while(!inauntru(i+len-1, j) || !inauntru(i, j+len-1) || !inauntru(i+len-1, j+len-1)){
                    len /= 2;
                }
                fillMat(i, j, i+len-1, j+len-1, ans);
            }
        }
    }
    fout << ans << "\n";
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            fout << a[i][j] << " ";
        }
        fout << "\n";
    }
    return 0;
}