题解 | #复数集合#
复数集合
https://www.nowcoder.com/practice/abdd24fa839c414a9b83aa9c4ecd05cc?tpId=67&tqId=29643&tPage=1&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking
#include <cstdio>
#include <iostream>
#include <queue>
using namespace std;
struct Complex{
int real,img;
Complex(int real ,int img ): real(real),img(img){}
bool operator < (Complex c)const{
return real*real+img*img < c.real*c.real+c.img*c.img;
}
};
int main() {
priority_queue<Complex> myPriQueue;
int num;
string opera;cin>>num;
while (num--) {
cin>>opera;
if(opera=="Pop"){
if(myPriQueue.empty())cout<<"empty"<<endl;
else{
cout<<myPriQueue.top().real<<"+i"<<myPriQueue.top().img<<endl;
myPriQueue.pop();cout<<"SIZE = "<<myPriQueue.size()<<endl;
}
}
else if(opera=="Insert"){
int a,b;
scanf("%d+i%d",&a,&b);
myPriQueue.push(Complex(a,b));
cout<<"SIZE = "<<myPriQueue.size()<<endl;
}
}
}
// 64 位输出请用 printf("%lld")

查看8道真题和解析