Pagini recente » Rating Mihai Alexandru (alexking) | Cod sursa (job #1276687) | Cod sursa (job #247024) | Cod sursa (job #1607556) | Cod sursa (job #1623964)
#include <stdio.h>
#define MAXN 500
int ma[MAXN][MAXN], nr = 1;
FILE *out;
void rezolv(int l1, int c1, int l2, int c2){
int k = 0, i, j;
while(l1 + (1 << k) - 1 <= l2 && c1 + (1 << k) - 1 <= c2)
k++;
k--;
for(i = l1; i < (l1 + (1 << k)); i++){
for(j = c1; j < (c1 + (1 << k)); j++){
ma[i][j] = nr;
}
}
nr++;
if(l1 + (1 << k) <= l2)
rezolv(l1 + (1 << k), c1, l2, c2);
if(c1 + (1 << k) <= c2)
rezolv(l1, c1 + (1 << k), l1 + (1 << k) - 1, c2);
}
int main(){
FILE *in = fopen("piese.in", "r");
int n, m;
fscanf(in, "%d%d", &n, &m);
fclose(in);
out = fopen("piese.out", "w");
rezolv(0, 0, n - 1, m - 1);
int i, j;
fprintf(out, "%d\n", nr - 1);
for(i = 0; i < n; i++){
for(j = 0; j < m; j++){
fprintf(out, "%d ", ma[i][j]);
}
fputc('\n', out);
}
fclose(out);
return 0;
}