考点:模拟,数据结构
使用优先队列模拟大顶堆或者普通容器存储后再排序。
代码一:
#include<bits/stdc++.h>
using namespace std;
const int MAXSIZE=1001;
struct E {
int x,y;
int l;
E(int x,int y,int l):x(x),y(y),l(l) {
}
bool operator <(const E &a)const {//大顶堆
if(l!=a.l) {
return l<a.l;
} else {
return y>a.y;
}
}
};
int main() {
int n;
while(cin>>n) {
string s,ep;
priority_queue<E> q;
for(int i=0; i<n; i++) {
cin>>s;
if(s=="Pop") {
if(q.size()==0) {
cout<<"empty"<<endl;
} else {
cout<<q.top().x<<"+i"<<q.top().y<<endl;
q.pop();
cout<<"SIZE = "<<q.size()<<endl;
}
} else {
cin>>ep;
int p1=ep.find("+");
int x=stoi(ep.substr(0,p1));
int y=stoi(ep.substr(p1+2));
int l=x*x+y*y;
q.push(E(x,y,l));
cout<<"SIZE = "<<q.size()<<endl;
}
}
}
return 0;
}