while(l<r){
int mid=(l+r+1)/2;
if(check(mid)==1) l=mid;
else r=mid-1;
}
while(l<r){
int mid=(l+r)/2;
if(check(mid)==1) l=mid+1;
else r=mid;
}
bool operator < (const A& a) const{
}
```language
for(auto i: mp){
q.push({i.first, i.second});
}
priority_queue<int> q;
```language
// 头文件 : <stack>
// 栈 : 1、先进后出 2、只能从一端进出,另一端封闭
// push : 往栈里添加一个元素 (进栈、入栈、压栈)
// pop : 从栈顶删除一个元素 (出栈、弹栈)
// top : 访问栈顶元素
// empty : 判断栈是否为空,如果为空 1
// size : 获取栈中元素的个数
// 头文件 : <queue>
// 优先队列 : 具有最高优先级的元素先出的特征
// push : 从队尾添加一个元素 (入队)
// pop : 从队首删除一个元素 (出队)
// top : 访问队首元素
// 不能访问队尾元素
// empty : 判断栈是否为空,如果为空 1
// size : 获取栈中元素的个数
// 1、优先队列存放的数据类型
// 2、优先队列的底层容器
// 3、优先级规则, 不写就默认降序
// greater<int> 升序
// less<int> 降序
priority_queue<int, vector<int>, greater<int> > q;
priority_queue<int, vector<int>, less<int> > p;
```language
// 头文件 : <queue>
// 队列 : 1、先进先出 2、从一端进,另一端出
// 进数据的一端:队尾
// 出数据的一端:队首
// push : 从队尾添加一个元素 (入队)
// pop : 从队首删除一个元素 (出队)
// front : 访问队首元素
// back : 访问队尾元素
// empty : 判断栈是否为空,如果为空 1
// size : 获取栈中元素的个数
freopen("xxx.in","r",stdin);
freopen("xxx.out","w",stdout);
#include<bits/stdc++.h>
using namespace std;
int main(){
return 0;
}