Advertisement
shek_shek

acm.sgu.ru/univer 466

Mar 3rd, 2014
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <map>
  5. #include <algorithm>
  6. #include <queue>
  7. #include <stack>
  8. #include <set>
  9. #include <math.h>
  10. #define forn(i, n) for(int i = 0; i < int(n); i++)
  11.  
  12.  
  13. using namespace std;
  14.  
  15.  
  16. int n;
  17.  
  18.  
  19. int f[128][128][128];
  20.  
  21. void inc (int x, int y, int z, int d) {
  22.     for (int i = x; i < n; i = i | (i + 1))
  23.         for (int j = y; j < n; j = j  | (j + 1))
  24.             for (int k = z; k < n; k = k | (k + 1))
  25.                 f[i][j][k] += d;
  26. }
  27.  
  28. int sum (int x, int y, int z) {
  29.     int res = 0;
  30.     for (int i = x; i >= 0; i = (i & (i + 1)) - 1)
  31.         for (int j = y; j >= 0; j = (j & (j + 1)) - 1)
  32.             for (int k = z; k >= 0; k = (k & (k + 1)) - 1)
  33.                 res += f[i][j][k];
  34.     return res;
  35. }
  36.  
  37. int main () {
  38.     cin >> n;
  39.     int t;
  40.     while (cin >> t) {
  41.         if (t == 3)
  42.             break;
  43.         if (t == 1) {
  44.             int x, y, z, k;
  45.             cin >> x >> y >> z >> k;
  46.             inc(x, y, z, k);
  47.         }
  48.         if (t == 2) {
  49.             int x1, y1, z1, x2, y2, z2;
  50.             cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;
  51.             cout << sum(x2, y2, z2)
  52.                 - sum(x1 - 1, y2, z2)
  53.                 - sum(x2, y1 - 1, z2)
  54.                 - sum(x2, y2, z1 - 1)
  55.                 + sum(x1 - 1, y2, z1 - 1)  
  56.                 + sum(x1 - 1, y1 - 1, z2)
  57.                 + sum(x2, y1 - 1, z1 - 1)
  58.                 - sum(x1 - 1, y1 - 1, z1 - 1) << endl;
  59.         }
  60.     }
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement