fork download
  1. #include <fstream>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. const int NMAX = 110;
  8.  
  9. int T, N, M, X1, Y1, Z1, X2, Y2, Z2, Val[NMAX][NMAX][NMAX];
  10. long long Aib[NMAX][NMAX][NMAX];
  11. char Type[20];
  12.  
  13. int LSB(int X)
  14. {
  15. return (X & (X - 1)) ^ X;
  16. }
  17.  
  18. void Update(int X, int Y, int Z, int Val)
  19. {
  20. for(int i = Y; i <= N; i += LSB(i))
  21. for(int j = Z; j <= N; j += LSB(j))
  22. Aib[X][i][j] += Val;
  23. }
  24.  
  25. long long Query(int X, int Y, int Z)
  26. {
  27. long long Now = 0;
  28. for(int i = Y; i; i -= LSB(i))
  29. for(int j = Z; j; j -= LSB(j))
  30. Now += Aib[X][i][j];
  31. return Now;
  32. }
  33.  
  34. long long Sum(int X1, int Y1, int Z1, int X2, int Y2, int Z2)
  35. {
  36. long long Ans = 0;
  37. for(int i = X1; i <= X2; ++ i)
  38. Ans += (Query(i, Y2, Z2) - Query(i, Y1 - 1, Z2) - Query(i, Y2, Z1 - 1) + Query(i, Y1 - 1, Z1 - 1));
  39. return Ans;
  40. }
  41.  
  42. int main()
  43. {
  44. cin >> T;
  45.  
  46. for(; T; T --)
  47. {
  48. for(int i = 1; i <= N; ++ i)
  49. for(int j = 1; j <= N; ++ j)
  50. for(int k = 1; k <= N; ++ k)
  51. Aib[i][j][k] = Val[i][j][k] = 0;
  52.  
  53. cin >> N >> M;
  54. for(int i = 1; i <= M; ++ i)
  55. {
  56. cin >> Type;
  57. if(Type[0] == 'U')
  58. {
  59. int W;
  60. cin >> X1 >> Y1 >> Z1 >> W;
  61. Update(X1, Y1, Z1, -Val[X1][Y1][Z1]);
  62. Update(X1, Y1, Z1, W);
  63. Val[X1][Y1][Z1] = W;
  64. }else
  65. {
  66. cin >> X1 >> Y1 >> Z1 >> X2 >> Y2 >> Z2;
  67. cout << Sum(X1, Y1, Z1, X2, Y2, Z2) << "\n";
  68. }
  69. }
  70. }
  71. }
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
Standard output is empty