data_structure/slide_min.hpp
Code
struct slide_min{
my_deque<pair<unsigned,int>>deq;
int l=0,r=0;
bool empty(){
return l==r;
}
int size(){
return r-l;
}
void push(unsigned x){
while(!deq.empty()&&deq.back().first>=x){
deq.pop_back();
}
deq.push_back(make_pair(x,r++));
}
void pop(){
if(!deq.empty()&&deq.front().second==l){
deq.pop_front();
}
l++;
}
unsigned fold(){
return deq.front().first;
}
};
#line 1 "data_structure/slide_min.hpp"
struct slide_min{
my_deque<pair<unsigned,int>>deq;
int l=0,r=0;
bool empty(){
return l==r;
}
int size(){
return r-l;
}
void push(unsigned x){
while(!deq.empty()&&deq.back().first>=x){
deq.pop_back();
}
deq.push_back(make_pair(x,r++));
}
void pop(){
if(!deq.empty()&&deq.front().second==l){
deq.pop_front();
}
l++;
}
unsigned fold(){
return deq.front().first;
}
};
Back to top page