题目:http://10.105.242.80/problem/p/108/
本来想用stl的sort自定义规则省个事,没想到竟然写出来超时!之前在牛客刷过这道题,那样做可以AC。非常意外,本以为用stl下的会比自己的更高效,想了想也许是因为自己插入时排序默认前面有序,不用全部比较,而sort则没有默认,全部进行排序,也许是超时的原因吧。。。但数据也不算庞大吧,懵逼中。。。
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
struct xs{
int shi;
int xu;
int mof;
xs(int s,int x){
shi=s;
xu=x;
mof=s*s+x*x;
}
};
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
vector<xs> vxs;
while(n--){
char buf[50];
scanf("%s",buf);
string s(buf);
if(s=="Insert"){
int s,x;
scanf("%d+i%d",&s,&x);
xs temp(s,x);
bool insertOk=false;
for(int i=0;i<vxs.size();i++){
if(vxs[i].mof<temp.mof){
vxs.insert(vxs.begin()+i,temp);
insertOk=true;
break;
}
}
if(!insertOk){
vxs.insert(vxs.end(),temp);
insertOk=true;
}
printf("Size: %d\n",vxs.size());
}else if(s=="Pop"){
if(vxs.empty()){
printf("Empty!\n");
}else{
xs temp=*vxs.begin();
vxs.erase(vxs.begin());
printf("%d+i%d\n",temp.shi,temp.xu);
if(vxs.empty()){
printf("Empty!\n");
}else{
printf("Size: %d\n",vxs.size());
}
}
}
}
}
return 0;
}