#include<cstdio>
#include<iostream>
#include<queue>
#include<set>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
multiset<LL>A,B;
multiset<LL>::iterator it1,it2;
LL T,n;
char s[10];
LL t;
void maintain(){
while(A.size()>B.size()+1){
it1=A.end();it1--;
B.insert(*it1);
A.erase(it1);
}
while(A.size()<B.size()){
it2=B.begin();
A.insert(*it2);
B.erase(it2);
}
if((A.size()+B.size())%2){
it1=A.end();it1--;
printf("%lld\n",*it1);
}
else if(!A.empty()){
it1=A.end();it1--;
it2=B.begin();
LL sum=(*it1+*it2);
if(sum%2!=0)
printf("%.1lf\n",(double)sum/2);
else printf("%lld\n",sum/2);
}
if(A.empty()&&B.empty())
printf("Empty!\n");
}
void add_num(long long t){
if(A.empty())A.insert(t);
else{
it1=A.end();it1--;it2=B.begin();
LL a=*it1;LL b=*it2;
if(t>a)B.insert(t);else A.insert(t);
}
maintain();
}
void erase_num(long long t){
if(!A.empty()&&A.find(t)!=A.end()){
it1=A.find(t);
A.erase(it1);
maintain();
}
else if(!B.empty()&&B.find(t)!=B.end()){
it2=B.find(t);
B.erase(it2);
maintain();
}
else{
printf("Wrong!\n");
}
}
int main(){
// freopen("in.txt","r",stdin);
scanf("%lld",&T);
while(T--){
scanf("%lld",&n);
A.clear();B.clear();
while(n--){
scanf("%s",s);scanf("%lld",&t);
if(strcmp(s,"add")==0){
add_num(t);
}else{
erase_num(t);
}
}
}
return 0;
}
ZOJ3612
最新推荐文章于 2015-11-30 23:20:24 发布