Pagini recente » Borderou de evaluare (job #2010081) | Borderou de evaluare (job #2007948) | Cod sursa (job #2921805) | Cod sursa (job #2391803) | Cod sursa (job #2540492)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
const int NMAX = 505;
int a[NMAX][NMAX];
int m , n;
int cnt = 0;
void bagaPiesa(int x,int y)
{
cnt++;
int xi = m-x+1;
int yi = n-y+1;
int mi = min(xi,yi);
int put2 = 1;
while(put2 < mi)
put2 <<= 1;
if(put2 != mi)
put2 >>= 1;
for(int i = x; i <= x+put2-1 ; i++)
for(int j = y ; j <= y+put2-1 ; j++)
a[i][j] = cnt;
}
int main()
{
ifstream cin("piese.in");
ofstream cout("piese.out");
cin >> m >> n;
for(int i = 1 ; i <= m ; i++)
{
for(int j = 1 ; j <= n ; j++)
{
if(a[i][j] == 0)
bagaPiesa(i,j);
}
}
cout << cnt << "\n";
for(int i = 1 ; i <= m ; i++)
{
for(int j = 1 ; j <= n ; j++)
cout << a[i][j] << " ";
cout << "\n";
}
return 0;
}