Advertisement
iocoder

Quadtrees

Sep 17th, 2012
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. // http://uva.onlinejudge.org/external/2/297.html
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. char input[10260];
  7. char bitmap[32][32] ;
  8. int blacks;
  9.  
  10. int rec(int i, int x, int y, int d) {
  11.     int j, k;
  12.     switch (input[i]) {
  13.         case 'p':   i = rec(i+1, x+(d/2), y,       d/2);
  14.                     i = rec(i,   x,       y,       d/2);
  15.                     i = rec(i,   x,       y+(d/2), d/2);
  16.                     i = rec(i, x+(d/2), y+(d/2), d/2);
  17.                     break;
  18.  
  19.         case 'f':
  20.                     for (j = x; j < x+d; j++)
  21.                         for (k = y; k < y+d; k++)
  22.                             if (!bitmap[j][k])
  23.                                 blacks += (bitmap[j][k] = 1);
  24.                     i++;
  25.                     break;
  26.         default:
  27.                     i++;
  28.                     break;
  29.  
  30.     }
  31.     return i;
  32. }
  33.  
  34.  
  35. int main()
  36. {
  37.     //freopen("input.txt", "r", stdin);
  38.     int n, i,j ;
  39.     scanf("%d", &n);
  40.     while(n--) {
  41.         for (i=0; i < 32; i++)
  42.             for (j=0; j < 32; j++)
  43.                 bitmap[i][j] = 0;
  44.         blacks = 0;
  45.         scanf("%s", input);
  46.         rec(0, 0, 0, 32);
  47.         scanf("%s", input);
  48.         rec(0, 0, 0, 32);
  49.         printf("There are %d black pixels.\n", blacks);
  50.     }
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement