struct node{
ll x,y;
node (ll a,ll b){x=a,y=b;}
bool operator < (const node &a)
const {if(x==a.x) return y<a.y;else return x<a.x;}//!设置小优先
node operator - (const node &a)
const {return {x-a.x,y-a.y};}//?凸包问题求向量
ll operator * (const node &a)
const {return x*a.y-y*a.x;}//?凸包问题中求叉积
//?主要是学习重载运算符
};
struct cmp{
bool operator()(ll x,ll y){
return x<y;
}
};
priority_queue<ll,vector<ll>,cmp> q;//?默认小优先即大顶堆,若cmp->greater<ll>则大优先。
sort(a+1,a+1+n,greater<ll>());//?默认小优先,这里是大优先。