Pagini recente » Cod sursa (job #2129077) | Cod sursa (job #1635401) | Cod sursa (job #1610745) | Cod sursa (job #596468) | Cod sursa (job #779712)
Cod sursa(job #779712)
#include <fstream>
#define MAX 505
using namespace std;
int v[MAX][MAX], actual = 0;
void DivideEtImpera(int x1, int y1, int x2, int y2)
{
if(x1 > x2 || y1 > y2) return;
int width = x2 - x1 + 1, height = y2 - y1 + 1, minim = min(width, height), i, j, k;
for(i = 0; (1 << i) <= minim; i++); i--;
actual++;
for(j = x1; j < x1 + (1 << i); j++)
for(k = y1; k < y1 + (1 << i); k++)
v[j][k] = actual;
DivideEtImpera(x1, y1 + (1<<i), x1 + (1<<i) - 1, y2);
DivideEtImpera(x1 + (1<<i), y1, x2, y2);
}
int main()
{
int n, m;
ifstream in("piese.in"); in>>n>>m; in.close();
DivideEtImpera(1, 1, n, m);
ofstream out("piese.out");
out<<actual<<"\n";
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++) out<<v[i][j]<<" ";
out<<"\n";
}
return 0;
}