#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
// 阅读一遍就行,有一些注意:如库函数调用、数字字符转换、引用参数等
struct fushu {
int x;
int y;
fushu() {};
fushu(int a, int b): x(a), y(b) {};
};
int func_modValue(fushu f) {
// x+iy
return sqrt( pow(f.x, 2) + pow(f.y, 2) );
}
bool comp(fushu f1, fushu f2) {
// 根据题意逆向排序---vector只有pop取元素
if ( func_modValue(f1) == func_modValue(f2) ) {
return f1.y > f2.y;
} else {
return func_modValue(f1) < func_modValue(f2);
}
}
void func_pop(vector<fushu>&
vec) { //***************若要改变容器内容函数参数记得引用
if (vec.size() == 0) {
cout << "empty" << endl;
} else {
sort(vec.begin(), vec.end(), comp);
fushu f = vec.back();
cout << f.x << "+i" << f.y << endl;
vec.pop_back();
cout << "SIZE = " << vec.size() << endl;
}
}
void func_insert(vector<fushu>& vec, fushu f) {
vec.push_back(f);
cout << "SIZE = " << vec.size() << endl;
}
int main() {
int num;
while (cin >> num) {
vector<fushu> vec;
// pop insert 操作
string var_order;
while (num--) {
cin >> var_order;
if (var_order == "Pop") func_pop(vec);
else if (var_order == "Insert") {
string var_fushu;
cin >> var_fushu;
// 多位数提取
int var_x = 0, var_y = 0;
bool flag = true; // true代表处理var_x false代表处理var_y
for (int i = 0; i < var_fushu.size(); i++) {
if (var_fushu[i] == '+') {
flag = !flag;
i++;//跳过'i'
} else if (flag) {
var_x = var_x * 10 + (var_fushu[i] - '0'); //*********记得字符数字转换
} else if (!flag) {
var_y = var_y * 10 + (var_fushu[i] - '0');
}
} //提取var_x var_y完毕
fushu* var_f = new fushu(var_x, var_y);
vec.push_back(*var_f);
cout << "SIZE = " << vec.size() << endl;
}
}
}
}
// 64 位输出请用 printf("%lld")