@@ -15,7 +15,7 @@ TEST(lazy_segment_tree, find_first_right) {
1515 std::uniform_int_distribution<unsigned long long > q_dist (
1616 std::numeric_limits<unsigned >::min (),
1717 (unsigned long long )std::numeric_limits<unsigned >::max () * n);
18- std::vector<unsigned > a (n);
18+ std::vector<unsigned long long > a (n);
1919 std::generate (a.begin (), a.end (), [&] { return val_dist (gen); });
2020 mrpython::lazy_segment_tree_add_add<unsigned long long > tree (a.begin (),
2121 a.end (), 0 );
@@ -24,9 +24,9 @@ TEST(lazy_segment_tree, find_first_right) {
2424 std::size_t l = size_dist (gen), r = size_dist (gen);
2525 if (l > r) std::swap (l, r);
2626 assert (l < r + 1 );
27- unsigned long long ans =
28- std::accumulate (a. begin () + l, a. begin () + r + 1 , 0ull ) ;
29- EXPECT_EQ ( tree.get (l, r + 1 ), ans );
27+ unsigned value = val_dist (gen);
28+ for ( std::size_t i = l; i < r + 1 ; ++i) a[i] += value ;
29+ tree.set (l, r + 1 , value );
3030 } else {
3131 std::size_t l = size_dist (gen), v = q_dist (gen);
3232 size_t p = l;
@@ -36,7 +36,8 @@ TEST(lazy_segment_tree, find_first_right) {
3636 if (s > v) break ;
3737 ++p;
3838 }
39- size_t out=tree.find_first_right (l, [&](unsigned long long x) { return x > v; });
39+ size_t out =
40+ tree.find_first_right (l, [&](unsigned long long x) { return x > v; });
4041 EXPECT_EQ (out, p);
4142 }
4243 }
@@ -53,7 +54,7 @@ TEST(lazy_segment_tree, find_last_left) {
5354 std::uniform_int_distribution<unsigned long long > q_dist (
5455 std::numeric_limits<unsigned >::min (),
5556 (unsigned long long )std::numeric_limits<unsigned >::max () * n);
56- std::vector<unsigned > a (n);
57+ std::vector<unsigned long long > a (n);
5758 std::generate (a.begin (), a.end (), [&] { return val_dist (gen); });
5859 mrpython::lazy_segment_tree_add_add<unsigned long long > tree (a.begin (),
5960 a.end (), 0 );
@@ -62,9 +63,9 @@ TEST(lazy_segment_tree, find_last_left) {
6263 std::size_t l = size_dist (gen), r = size_dist (gen);
6364 if (l > r) std::swap (l, r);
6465 assert (l < r + 1 );
65- unsigned long long ans =
66- std::accumulate (a. begin () + l, a. begin () + r + 1 , 0ull ) ;
67- EXPECT_EQ ( tree.get (l, r + 1 ), ans );
66+ unsigned value = val_dist (gen);
67+ for ( std::size_t i = l; i < r + 1 ; ++i) a[i] += value ;
68+ tree.set (l, r + 1 , value );
6869 } else {
6970 std::size_t l = size_dist (gen), v = q_dist (gen);
7071 size_t p = l;
@@ -74,7 +75,8 @@ TEST(lazy_segment_tree, find_last_left) {
7475 if (s > v) break ;
7576 --p;
7677 }
77- size_t out=tree.find_last_left (l, [&](unsigned long long x) { return x > v; });
78+ size_t out =
79+ tree.find_last_left (l, [&](unsigned long long x) { return x > v; });
7880 EXPECT_EQ (out, p);
7981 }
8082 }
0 commit comments