use indexed_priority_queue::ArrayMapIPQ;
use ordered_float::OrderedFloat;
use std::cmp::Reverse;
pub fn main() {
let capacity = 4;
let mut vsids = ArrayMapIPQ::<_, 1>::with_capacity(
vec![Reverse(OrderedFloat(0.)); capacity].into_boxed_slice(),
vec![usize::MAX; capacity].into_boxed_slice(),
capacity,
);
for variable in 1..=4 {
vsids.push(variable, Reverse(0.0.into()));
}
vsids.remove_index(1);
vsids.remove_index(2);
vsids.remove_index(3);
vsids.update_down(3).0 .0 += 1.0;
vsids.restore_index(3);
assert_eq!(vsids.pop(), Some(3));
vsids.remove_index(4);
vsids.update_down(4).0 .0 += 1.0;
vsids.restore_index(4);
vsids.update_down(3).0 .0 += 1.0;
vsids.restore_index(3);
assert_eq!(vsids.pop(), Some(3));
assert_eq!(vsids.pop(), Some(4));
assert_eq!(vsids.pop(), None);
}