Cod sursa(job #2540412)

Utilizator theo2003Theodor Negrescu theo2003 Data 7 februarie 2020 09:52:30
Problema Piese Scor 100
Compilator cpp-64 Status done
Runda irim_eralumis Marime 1.09 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream in("piese.in");
ofstream out("piese.out");
int powers[9] = {1, 2, 4, 8, 16, 32, 64, 128, 256};
vector<vector<int> > pieces;
int m, n, piece = 1;
int main() {
    in>>m>>n;
    pieces = vector<vector<int> >(m, vector<int>(n, 0));
    for(int x = 0; x<m; x++) {
        for(int y = 0; y<n; y++) {
            if(pieces[x][y]==0) {
                int size = min(n-y, m-x);
                if(!size)
                    continue;
                int powerindex;
                for(powerindex = 0; (powerindex<9)&&(size>=powers[powerindex]); powerindex++);
                powerindex--;
                for(int x1 = x; x1<(x+powers[powerindex]); x1++) {
                    for(int y1 = y; y1<(y+powers[powerindex]); y1++)
                        pieces[x1][y1] = piece;
                }
                piece++;
            } else
                continue;
        }
    }
    out<<piece - 1<<'\n';
    for(vector<int> &x : pieces) {
        for(int &y : x)
            out<<y<<' ';
        out<<'\n';
    }
}