题解 | #复数集合#

复数集合

https://www.nowcoder.com/practice/abdd24fa839c414a9b83aa9c4ecd05cc

#include <iostream>
#include <queue>
#include <string>

using namespace std;

struct plurality{
    int num;
    int i;
    plurality(int num,int i):num(num),i(i) {}
};

bool operator <(plurality x,plurality y){
    int xdata = x.num*x.num+x.i*x.i;
    int ydata = y.num*y.num+y.i*y.i;
    if (xdata==ydata){
        return x.i>y.i;
    } else{
        return xdata<ydata;
    }
}

int main(){
    int n;
    string str,s;
    priority_queue<plurality> plQ;
    cin>>n;
    while (n--){
        cin>>str;
        if (str == "Pop"){
            if (plQ.empty()){
                cout<<"empty"<<endl;
            } else{
                plurality number = plQ.top();
                plQ.pop();
                cout<<number.num<<"+i"<<number.i<<endl;
                cout<<"SIZE = "<<plQ.size()<<endl;
            }
        } else if (str == "Insert"){
            cin>>s;
            int end = s.find('+');
            plQ.push(plurality(stoi(s.substr(0,end)), stoi(s.substr(end+2))));
            cout<<"SIZE = "<<plQ.size()<<endl;
        }
    }

    return 0;
}

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务