Cod sursa(job #1623964)

Utilizator hrazvanHarsan Razvan hrazvan Data 1 martie 2016 23:04:17
Problema Piese Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.87 kb
#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;
}