Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. var
  2. a, b, c, d, e, g, i, j, m, ot, x1, y1, z1, x2, y2, z2: int64;
  3. f: array [0..128, 0..128, 0..128] of int64;
  4.  
  5. procedure upd(x, y, z, dv: int64);
  6. var
  7. x1, y1, z1: int64;
  8. begin
  9. while (x <= a - 1) do
  10. begin
  11. y1 := y;
  12. while (y1 <= a - 1) do
  13. begin
  14. z1 := z;
  15. while (z1 <= a - 1) do
  16. begin
  17. f[x, y1, z1] := f[x, y1, z1] + dv;
  18. z1 := z1 or (z1 + 1);
  19. end;
  20. y1 := y1 or (y1 + 1);
  21. end;
  22. x := x or (x + 1);
  23. end;
  24. end;
  25.  
  26. function query(x, y, z: int64): int64;
  27. var
  28. ot1, x1, y1, z1: int64;
  29. begin
  30. ot1 := 0;
  31. while (x >= 0) do
  32. begin
  33. y1 := y;
  34. while (y1 >= 0) do
  35. begin
  36. z1 := z;
  37. while (z1 >= 0) do
  38. begin
  39. ot1 := f[x, y1, z1] + ot1;
  40. z1 := (z1 and (z1 + 1)) - 1;
  41. end;
  42. y1 := (y1 and (y1 + 1)) - 1;
  43. end;
  44. x := (x and (x + 1)) - 1;
  45. end;
  46. query := ot1;
  47. end;
  48.  
  49. begin
  50. assign(input, 'stars.in');
  51. assign(output, 'stars.out');
  52. reset(input);
  53. rewrite(output);
  54. readln(a);
  55. read(c);
  56. while (c <> 3) do
  57. begin
  58. if (c = 1) then
  59. begin
  60. read(x1, y1, z1, d);
  61. upd(x1, y1, z1, d);
  62. end;
  63. if (c = 2) then
  64. begin
  65. read(x1, y1, z1, x2, y2, z2);
  66. ot := query(x2, y2, z2) - (query(x1 - 1, y1 - 1, z1 - 1) + query(x2, y2, z1 - 1) + query(x2, y1 - 1, z2) + query(x1 - 1, y2, z2) - query(x1 - 1, y1 - 1, z2) - query(x2, y1 - 1, z1 - 1) - query(x1 - 1, y2, z1 - 1));
  67. writeln(ot);
  68. end;
  69. read(c);
  70. end;
  71. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement