Cod sursa(job #2190673)

Utilizator theo2003Theodor Negrescu theo2003 Data 31 martie 2018 14:52:41
Problema Piese Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 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<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';
	}
}