SegmentTree_test.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define INF 1000000000
  4. #include "SegmentTree.cpp"
  5. int main() {
  6. int values[] = {1,2,3,4,5,6,7};
  7. build(sizeof(values)/sizeof(int), values);
  8. assert(query(1,5) == make_pair(2, 14));
  9. assert(query(0,5) == make_pair(1, 15));
  10. assert(query(2,8) == make_pair(3, 25));
  11. assert(query(4,5) == make_pair(5, 5));
  12. update_range(0, 7, 1);
  13. assert(query(1,5) == make_pair(3, 18));
  14. assert(query(0,7) == make_pair(2, 35));
  15. assert(query(2,8) == make_pair(4, 30));
  16. assert(query(4,5) == make_pair(6, 6));
  17. update_range(2, 6, 2);
  18. update_range(3, 7, 2);
  19. assert(query(1,5) == make_pair(3, 28));
  20. assert(query(0,7) == make_pair(2, 51));
  21. assert(query(2,8) == make_pair(6, 46));
  22. assert(query(4,5) == make_pair(10, 10));
  23. assert(query(5,7) == make_pair(10, 21));
  24. update(2, 0);
  25. assert(query(1,5) == make_pair(0, 22));
  26. assert(query(0,7) == make_pair(0, 45));
  27. assert(query(2,8) == make_pair(0, 40));
  28. assert(query(4,5) == make_pair(10, 10));
  29. assert(query(5,7) == make_pair(10, 21));
  30. update_range(1, 4, 2);
  31. assert(query(1,5) == make_pair(2, 28));
  32. assert(query(0,7) == make_pair(2, 51));
  33. assert(query(4,8) == make_pair(10, 31));
  34. assert(query(4,5) == make_pair(10, 10));
  35. assert(query(6,7) == make_pair(10, 10));
  36. assert(query(1,3) == make_pair(2, 7));
  37. update(5, -1);
  38. assert(query(0, 5) == make_pair(2, 30));
  39. assert(query(6, 7) == make_pair(10, 10));
  40. assert(query(5, 6) == make_pair(-1, -1));
  41. assert(query(4, 7) == make_pair(-1, 19));
  42. update(5, 3);
  43. update_range(4, 7, 1);
  44. assert(query(4, 7) == make_pair(4, 26));
  45. assert(query(0, 7) == make_pair(2, 46));
  46. delete[] tree;
  47. int values2[] = {4};
  48. build(sizeof(values2)/sizeof(int), values2);
  49. assert(query(0,1) == make_pair(4, 4));
  50. update(0, 2);
  51. assert(query(0,1) == make_pair(2, 2));
  52. update_range(0, 1, 7);
  53. assert(query(0,1) == make_pair(9, 9));
  54. update(0, 3);
  55. assert(query(0,1) == make_pair(3, 3));
  56. update_range(0, 1, 7);
  57. update(0, 3);
  58. assert(query(0,1) == make_pair(3, 3));
  59. delete[] tree;
  60. return 0;
  61. }