Pagini recente » Borderou de evaluare (job #804598) | Cod sursa (job #3226571) | Cod sursa (job #333729) | Cod sursa (job #492176) | Cod sursa (job #517770)
Cod sursa(job #517770)
#include <fstream>
using namespace std;
int M, N;
int result[502][502];
int nop;
int main()
{
ifstream fin("piese.in");
ofstream fout("piese.out");
fin >> M >> N;
for (int i = 1; i <= M; ++i)
for (int j = 1; j <= N; ++j)
if (result[i][j] == 0)
{
++nop;
int can = 1;
for (int k = j + 1; k <= N && result[i][k] == 0; ++k)
++can;
can = min(can, M - i + 1);
while ((can & (can - 1)) != 0)
can &= can - 1;
for (int i2 = i; i2 <= i + can - 1; ++i2)
for (int j2 = j; j2 <= j + can - 1; ++j2)
result[i2][j2] = nop;
}
fout << nop;
for (int i = 1; i <= M; ++i)
{
fout << '\n';
for (int j = 1; j <= N; ++j)
fout << result[i][j] << ' ';
}
fin.close();
fout.close();
}