不需要全部有序的情况下使用堆的数据结构会更高效

#include <iostream>
#include <queue>
#include "queue"
using namespace std;
struct Complex {
    int shibu;
    int xubu;
    Complex(int a, int b) {
        shibu = a;
        xubu = b;
    }
    bool operator< (Complex B)const {
        if ((shibu * shibu + xubu * xubu) < (B.shibu * B.shibu + B.xubu * B.xubu))
            return true;
        else if ((shibu * shibu + xubu * xubu) == (B.shibu * B.shibu + B.xubu*
                 B.xubu)) {
            return xubu > B.xubu;
        } else return false;
    }
};
int main() {
    int n;
    while (cin >> n) { // 注意 while 处理多个 case
        // cout << a + b << endl;
        priority_queue<Complex> myQueue;
        while (n--) {
            string order;
            cin >> order;
            if (order == "Pop") {
                if (myQueue.empty()) cout << "empty" << endl;
                else {
                    Complex biggest = myQueue.top();
                    myQueue.pop();
                    cout << biggest.shibu << "+i" << biggest.xubu << endl << "SIZE = " <<
                         myQueue.size() << endl;
                }
            } else {//命令为insert时
                int sb, xb;
                scanf("%d+i%d", &sb, &xb);
                myQueue.push(Complex(sb, xb));
                cout << "SIZE = " << myQueue.size() << endl;
            }
        }

    }

}
// 64 位输出请用 printf("%lld")