Pagini recente » Cod sursa (job #2655691) | Cod sursa (job #10741) | Cod sursa (job #662935) | Cod sursa (job #1719505) | Cod sursa (job #861398)
Cod sursa(job #861398)
#include <fstream>
using namespace std;
ifstream fin("piese.in");
ofstream fout("piese.out");
int a[503][503];
int n, m, i, j, k, ii, jj, nr;
int main() {
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j] == 0) {
// caut cea mai mare putere a lui 2 asa incat i+2^k-1 <= n si j+2^k-1 <=m
ii = i;
jj = j;
k = 1;
while (i+k-1<=n && j+k-1<=m)
k=k*2;
k/=2;
nr++;
for(ii=i;ii<=i+k-1;ii++)
for (jj=j;jj<=j+k-1;jj++)
a[ii][jj] = nr;
}
fout<<nr<<"\n";
for (i=1;i<=n;i++) {
for (j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
return 0;
}