Pagini recente » Cod sursa (job #845847) | Cod sursa (job #2853884) | Cod sursa (job #2840144) | Soluţii ONIS 2015, Runda 2 | Cod sursa (job #120946)
Cod sursa(job #120946)
Utilizator |
Airinei Adrian astronomy |
Data |
7 ianuarie 2008 13:24:59 |
Problema |
Piese |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
0.84 kb |
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 512
int N, M, K;
int A[MAXN][MAXN];
void baga(int x1, int y1, int x2, int y2)
{
if(x2 < x1 || y2 < y1) return ;
int i, j, k, b, len = min(x2-x1+1, y2-y1+1);
for(k = 0; k <= 9; k++)
if( (1<<k) <= len ) b = k;
for(K++, i = x1; i <= x1+(1<<b)-1; i++)
for(j = y1; j <= y1+(1<<b)-1; j++)
A[i][j] = K;
baga(x1, y1+(1<<b), x2, y2);
baga(x1+(1<<b), y1, x2, y1+(1<<b)-1);
}
int main(void)
{
freopen("piese.in", "rt", stdin);
freopen("piese.out", "wt", stdout);
scanf("%d %d\n", &N, &M);
baga(1, 1, N, M);
int i, j;
for(printf("%d\n", K), i = 1; i <= N; i++, printf("\n"))
for(j = 1; j <= M; j++)
printf("%d ", A[i][j]);
return 0;
}