@@ -13,7 +13,7 @@ mod test {
1313
1414 #[ test]
1515 fn test_rmq ( ) {
16- let mut arq = StaticArq :: < AssignMin > :: new ( vec ! [ 0 ; 10 ] ) ;
16+ let mut arq = StaticArq :: < AssignMin > :: new ( & [ 0 ; 10 ] ) ;
1717
1818 assert_eq ! ( arq. query( 0 , 9 ) , 0 ) ;
1919
@@ -27,7 +27,8 @@ mod test {
2727 #[ test]
2828 fn test_dynamic_rmq ( ) {
2929 let initializer = Box :: new ( |_, _| 0 ) ;
30- let ( mut arq, view) = DynamicArq :: < AssignMin > :: new ( 0 , 9 , false , initializer) ;
30+ let mut arq = DynamicArq :: < AssignMin > :: new ( false , initializer) ;
31+ let view = arq. build_using_initializer ( 0 , 9 ) ;
3132
3233 assert_eq ! ( arq. query( view, 0 , 9 ) , 0 ) ;
3334
@@ -41,7 +42,8 @@ mod test {
4142 #[ test]
4243 fn test_persistent_rmq ( ) {
4344 let initializer = Box :: new ( |_, _| 0 ) ;
44- let ( mut arq, mut view) = DynamicArq :: < AssignMin > :: new ( 0 , 9 , true , initializer) ;
45+ let mut arq = DynamicArq :: < AssignMin > :: new ( true , initializer) ;
46+ let mut view = arq. build_using_initializer ( 0 , 9 ) ;
4547
4648 let at_init = view;
4749 view = arq. modify ( view, 2 , 4 , & -5 ) ;
@@ -56,7 +58,7 @@ mod test {
5658
5759 #[ test]
5860 fn test_range_sum ( ) {
59- let mut arq = StaticArq :: < AssignSum > :: new ( vec ! [ ( 0 , 1 ) ; 10 ] ) ;
61+ let mut arq = StaticArq :: < AssignSum > :: new ( & [ ( 0 , 1 ) ; 10 ] ) ;
6062
6163 assert_eq ! ( arq. query( 0 , 9 ) , ( 0 , 10 ) ) ;
6264
@@ -70,7 +72,8 @@ mod test {
7072 #[ test]
7173 fn test_dynamic_range_sum ( ) {
7274 let initializer = Box :: new ( |l, r| ( 0 , 1 + r - l) ) ;
73- let ( mut arq, view) = DynamicArq :: < AssignSum > :: new ( 0 , 9 , false , initializer) ;
75+ let mut arq = DynamicArq :: < AssignSum > :: new ( false , initializer) ;
76+ let view = arq. build_using_initializer ( 0 , 9 ) ;
7477
7578 assert_eq ! ( arq. query( view, 0 , 9 ) , ( 0 , 10 ) ) ;
7679
@@ -83,7 +86,7 @@ mod test {
8386
8487 #[ test]
8588 fn test_supply_demand ( ) {
86- let mut arq = StaticArq :: < SupplyDemand > :: new ( vec ! [ ( 0 , 0 , 0 ) ; 10 ] ) ;
89+ let mut arq = StaticArq :: < SupplyDemand > :: new ( & [ ( 0 , 0 , 0 ) ; 10 ] ) ;
8790
8891 arq. modify ( 1 , 1 , & ( 25 , 100 ) ) ;
8992 arq. modify ( 3 , 3 , & ( 100 , 30 ) ) ;
@@ -94,7 +97,8 @@ mod test {
9497
9598 #[ test]
9699 fn test_dynamic_supply_demand ( ) {
97- let ( mut arq, view) = DynamicArq :: < SupplyDemand > :: new_with_identity ( 0 , 9 , false ) ;
100+ let mut arq = DynamicArq :: < SupplyDemand > :: new_with_identity ( false ) ;
101+ let view = arq. build_using_initializer ( 0 , 9 ) ;
98102
99103 arq. modify ( view, 1 , 1 , & ( 25 , 100 ) ) ;
100104 arq. modify ( view, 3 , 3 , & ( 100 , 30 ) ) ;
@@ -106,7 +110,7 @@ mod test {
106110 #[ test]
107111 fn test_binary_search_rmq ( ) {
108112 let vec = vec ! [ 2 , 1 , 0 , -1 , -2 , -3 , -4 , -5 ] ;
109- let mut arq = StaticArq :: < AssignMin > :: new ( vec) ;
113+ let mut arq = StaticArq :: < AssignMin > :: new ( & vec) ;
110114 let first_neg = static_arq:: first_negative ( & mut arq) ;
111115
112116 arq. modify ( 3 , 7 , & 0 ) ;
@@ -116,11 +120,26 @@ mod test {
116120 assert_eq ! ( first_neg_zeros, None ) ;
117121 }
118122
123+ #[ test]
124+ fn test_dynslice_binary_search_rmq ( ) {
125+ let vec = vec ! [ 2 , 1 , 0 , -1 , -2 , -3 , -4 , -5 ] ;
126+ let mut arq = DynamicArq :: < AssignMin > :: new_with_identity ( false ) ;
127+ let view = arq. build_from_slice ( & vec) ;
128+ let first_neg = dynamic_arq:: first_negative ( & mut arq, view) ;
129+
130+ arq. modify ( view, 3 , 7 , & 0 ) ;
131+ let first_neg_zeros = dynamic_arq:: first_negative ( & mut arq, view) ;
132+
133+ assert_eq ! ( first_neg, Some ( 3 ) ) ;
134+ assert_eq ! ( first_neg_zeros, None ) ;
135+ }
136+
119137 #[ test]
120138 fn test_dynamic_binary_search_rmq ( ) {
121139 let initializer = Box :: new ( |_, r| 2 - r) ;
122140 let ( l_bound, r_bound) = ( 0 , 1_000_000_000_000_000_000 ) ;
123- let ( mut arq, view) = DynamicArq :: < AssignMin > :: new ( l_bound, r_bound, false , initializer) ;
141+ let mut arq = DynamicArq :: < AssignMin > :: new ( false , initializer) ;
142+ let view = arq. build_using_initializer ( l_bound, r_bound) ;
124143 let first_neg = dynamic_arq:: first_negative ( & mut arq, view) ;
125144
126145 arq. modify ( view, 2 , r_bound - 1 , & 0 ) ;
0 commit comments