struct Tower{
Tower(int h, int p){
height = h;
pos = p;
}
bool operator < (Tower &t) {
if (height < t.height) {
return true;
}
else {
return false;
}
}
int height;
int pos;
};
struct cmp_less{
bool operator() (Tower & t1, Tower &t2){
if (t1.height < t2.height) {
return true;
}
else {
return false;
}
}
};
struct cmp_greater{
bool operator() (Tower & t1, Tower &t2){
if (t1.height > t2.height) {
return true;
}
else {
return false;
}
}
};
priority_queue<Tower, vector<Tower>, cmp_greater> min_heap(tower.begin(), tower.begin() + n / 2) ;//最小堆
priority_queue<Tower, vector<Tower>, cmp_less> max_heap(tower.begin() + n / 2, tower.end() ); //最大堆