题解 | #复数集合#
复数集合
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")