Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. bitset<4096> octree;
  6. string s;
  7.  
  8. int processBitset(int i, int start, int end, bitset<4096> &o) {
  9.     if(start == end) {
  10.         if(s[i] == 'b'){
  11.             o.set(start);
  12.         }
  13.         return i + 1;
  14.     } else {
  15.         if(s[i] == 'p') {
  16.             int cur = i + 1;
  17.             int size = end - start + 1;
  18.             int chop = size / 8;
  19.             for(int j = 0; j < 8; j++) {
  20.                 cur = processBitset(cur,start + chop * j,start + chop * (j + 1) - 1,o);
  21.             }
  22.             return cur;
  23.         } else {
  24.             if(s[i] == 'b') {
  25.                 for(int j = start; j <= end; j++) {
  26.                     o.set(j);
  27.                 }
  28.             }
  29.             return i + 1;
  30.         }
  31.     }
  32. }
  33.  
  34. int main() {
  35.     int nCtr;
  36.     scanf("%d",&nCtr);
  37.     for(int x = 0; x < nCtr; x++) {
  38.         octree.reset();
  39.         cin >> s;
  40.         processBitset(0,0,4095,octree);
  41.         cin >> s;
  42.         processBitset(0,0,4095,octree);
  43.         printf("%d\n",octree.count());
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement