@@ -15,7 +15,7 @@ TEST(lazy_segment_tree, find_first_right) {
15
15
std::uniform_int_distribution<unsigned long long > q_dist (
16
16
std::numeric_limits<unsigned >::min (),
17
17
(unsigned long long )std::numeric_limits<unsigned >::max () * n);
18
- std::vector<unsigned > a (n);
18
+ std::vector<unsigned long long > a (n);
19
19
std::generate (a.begin (), a.end (), [&] { return val_dist (gen); });
20
20
mrpython::lazy_segment_tree_add_add<unsigned long long > tree (a.begin (),
21
21
a.end (), 0 );
@@ -24,9 +24,9 @@ TEST(lazy_segment_tree, find_first_right) {
24
24
std::size_t l = size_dist (gen), r = size_dist (gen);
25
25
if (l > r) std::swap (l, r);
26
26
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 );
30
30
} else {
31
31
std::size_t l = size_dist (gen), v = q_dist (gen);
32
32
size_t p = l;
@@ -36,7 +36,8 @@ TEST(lazy_segment_tree, find_first_right) {
36
36
if (s > v) break ;
37
37
++p;
38
38
}
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; });
40
41
EXPECT_EQ (out, p);
41
42
}
42
43
}
@@ -53,7 +54,7 @@ TEST(lazy_segment_tree, find_last_left) {
53
54
std::uniform_int_distribution<unsigned long long > q_dist (
54
55
std::numeric_limits<unsigned >::min (),
55
56
(unsigned long long )std::numeric_limits<unsigned >::max () * n);
56
- std::vector<unsigned > a (n);
57
+ std::vector<unsigned long long > a (n);
57
58
std::generate (a.begin (), a.end (), [&] { return val_dist (gen); });
58
59
mrpython::lazy_segment_tree_add_add<unsigned long long > tree (a.begin (),
59
60
a.end (), 0 );
@@ -62,9 +63,9 @@ TEST(lazy_segment_tree, find_last_left) {
62
63
std::size_t l = size_dist (gen), r = size_dist (gen);
63
64
if (l > r) std::swap (l, r);
64
65
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 );
68
69
} else {
69
70
std::size_t l = size_dist (gen), v = q_dist (gen);
70
71
size_t p = l;
@@ -74,7 +75,8 @@ TEST(lazy_segment_tree, find_last_left) {
74
75
if (s > v) break ;
75
76
--p;
76
77
}
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; });
78
80
EXPECT_EQ (out, p);
79
81
}
80
82
}
0 commit comments