输入
3
Pop
Insert
1+i2
Pop
输出
empty
SIZE = 1
1+i2
SIZE = 0
#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<math.h>
#include <vector>
using namespace std;
class complexNum{
public:
int a,b;
complexNum():a(0),b(0){}
complexNum(int aa,int bb):a(aa),b(bb){}
void setComplex(int aa,int bb){
a=aa,b=bb;
}
double Modulus(){
return sqrt(a*a+b*b);
}
void print(){
if(a!=0) cout<<a;
if(b>0) cout<<"+i"<<b;
if(b<0) cout<<"-i"<<abs(b);
cout<<endl;
}
};
vector<complexNum> obj;
bool cmp(complexNum a,complexNum b){
return a.Modulus()<b.Modulus();
}
void myPop(){
if(!obj.size()){
cout<<"empty"<<endl;
}
else{
sort(obj.begin(),obj.end(),cmp);
// vector<complexNum>::iterator it=obj.end();
complexNum t=obj.back();
t.print();
obj.erase(obj.end());
cout<<"SIZE = "<<obj.size()<<endl;
}
}
void insert(complexNum t){
obj.push_back(t);
cout<<"SIZE = "<<obj.size()<<endl;
}
int main()
{
int n;
string opt;
complexNum temp;
cin>>n;
getchar();
while(n--){
getline(cin,opt);
if(!opt.compare("Pop")){
myPop();
}
else if(opt.find("Insert ")==0){
opt=opt.substr(7);
int a,b;
size_t pos=opt.find("+i");
a=atoi(opt.substr(0,pos).c_str());
b=atoi(opt.substr(pos+2).c_str());
temp.setComplex(a,b);
insert(temp);
}
}
}