|
@@ -0,0 +1,45 @@
|
|
|
+#include <bits/stdc++.h>
|
|
|
+using namespace std;
|
|
|
+int min(int a, int b) {
|
|
|
+ return a<b ? a : b;
|
|
|
+}
|
|
|
+#include "SegmentTree.cpp"
|
|
|
+int main() {
|
|
|
+ int values[] = {1,2,3,4,5,6,7};
|
|
|
+ build(sizeof(values)/sizeof(int), values);
|
|
|
+ assert(query(1,5) == 2);
|
|
|
+ assert(query(0,5) == 1);
|
|
|
+ assert(query(2,8) == 3);
|
|
|
+ assert(query(4,5) == 5);
|
|
|
+ update_range(0, 7, 1);
|
|
|
+ assert(query(1,5) == 3);
|
|
|
+ assert(query(0,7) == 2);
|
|
|
+ assert(query(2,8) == 4);
|
|
|
+ assert(query(4,5) == 6);
|
|
|
+ update_range(2, 6, 2);
|
|
|
+ update_range(3, 7, 2);
|
|
|
+ assert(query(1,5) == 3);
|
|
|
+ assert(query(0,7) == 2);
|
|
|
+ assert(query(2,8) == 6);
|
|
|
+ assert(query(4,5) == 10);
|
|
|
+ assert(query(5,7) == 10);
|
|
|
+ update(2, 0);
|
|
|
+ assert(query(1,5) == 0);
|
|
|
+ assert(query(0,7) == 0);
|
|
|
+ assert(query(2,8) == 0);
|
|
|
+ assert(query(4,5) == 10);
|
|
|
+ assert(query(5,7) == 10);
|
|
|
+ update_range(1, 4, 2);
|
|
|
+ assert(query(1,5) == 2);
|
|
|
+ assert(query(0,7) == 2);
|
|
|
+ assert(query(4,8) == 10);
|
|
|
+ assert(query(4,5) == 10);
|
|
|
+ assert(query(6,7) == 10);
|
|
|
+ assert(query(1,3) == 2);
|
|
|
+ update(5, -1);
|
|
|
+ assert(query(0, 5) == 2);
|
|
|
+ assert(query(6, 7) == 10);
|
|
|
+ assert(query(5, 6) == -1);
|
|
|
+ assert(query(4, 7) == -1);
|
|
|
+ return 0;
|
|
|
+}
|