Advertisement
Guest User

G

a guest
Sep 27th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. int a, b, c, n;
  2. ll ans = 0;
  3. map <pair<pii, int>, int> removed;
  4. int dx[6] = {1, -1, 0, 0, 0, 0};
  5. int dy[6] = {0, 0, -1, 1, 0, 0};
  6. int dz[6] = {0, 0, 0, 0, -1, 1};
  7.  
  8. bool is_removed(int x, int y, int z) {
  9.     if (x < 0 || x >= a || y < 0 || y >= b || z < 0 || z >= c) {
  10.         return true;
  11.     }
  12.     return removed.count(mp(mp(x, y), z));
  13. }
  14.  
  15. void remove(int x, int y, int z) {
  16.     removed[mp(mp(x,y), z)] = 1;
  17. }
  18.  
  19. void remove() {
  20.     int x, y, z;
  21.     scanf("%d %d %d\n", &x, &y, &z);
  22.     for (int d = 0; d < 6; d++) {
  23.         int xx = x + dx[d];
  24.         int yy = y + dy[d];
  25.         int zz = z + dz[d];
  26.         if (is_removed(xx, yy, zz)) {
  27.             ans--;
  28.         } else {
  29.             ans++;
  30.         }
  31.     }
  32.     remove(x, y, z);
  33. }
  34.  
  35. int main() {
  36.    
  37.     scanf("%d %d %d %d\n", &a, &b, &c, &n);
  38.    
  39.     ans = 2ll * (a * 1ll * b + a * 1ll * c + b * 1ll * c);
  40.    
  41.     while (n--) {
  42.         remove();
  43.     }
  44.    
  45.     printf("%lld\n", ans);
  46.        
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement