Pagini recente » Cod sursa (job #2869892) | Cod sursa (job #178850) | Cod sursa (job #853820) | Monitorul de evaluare | Cod sursa (job #131432)
Cod sursa(job #131432)
#include <stdio.h>
using namespace std;
int a[10]={1,2,4,8,16,32,64,128,256,512},n,m,e,b[501][501];
void citire()
{
freopen("piese.in","r",stdin);
scanf("%d%d", &n, &m);
fclose(stdin);
}
void rezolvare(int x1, int y1, int x2, int y2)
{
//w=minim(x2-x1+1);
//int w=x2-x1+1<?y2-y1+1;
int w=x2-x1+1;
if (y2-y1+1<w)
w=y2-y1+1;
int q=0;
for (int i=0; i<=8; i++)
if (a[i]<=w && a[i+1]>w)
{
q=a[i];
break;
}
++e;
int o=0;
for (int i=x1; i<x1+q; i++)
for (int j=y1; j<y1+q; j++)
{
b[i][j]=e;
o=1;
}
if (o==0)
--e;
if (q)
{
rezolvare(x1,y1+q,x1+q-1,y2);
rezolvare(x1+q,y1,x2,y2);
}
}
void afisare()
{
freopen("piese.out","w",stdout);
printf("%d\n",e);
for (int i=1; i<=n; i++)
{
for (int j=1; j<=m; j++)
printf("%d ",b[i][j]);
printf("\n");
}
fclose(stdout);
}
int main()
{
citire();
rezolvare(1,1,n,m);
afisare();
return 0;
}