Pagini recente » Cod sursa (job #277883) | Cod sursa (job #3251637) | Cod sursa (job #739351) | Cod sursa (job #3241909) | Cod sursa (job #2190673)
#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<8)&&(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';
}
}