#include<cstdio>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<string>
#include<queue>
#include<map>
using namespace std;
struct Node
{
int type; //0表示buy
double p;
int s;
}node[5005],buy[5005],sell[5005];
bool BUY(Node x,Node y) //价格越高优先级越高,价格一样,股数越高越高
{
if(x.p != y.p)
return x.p>y.p;
else
return x.s>y.s;
}
bool SELL(Node x,Node y) //价格越低优先级越高,价格一样,股数越高越高
{
if(x.p != y.p)
return x.p<y.p;
else
return x.s>y.s;
}
int min(int x,int y)
{
if(x<y) return x;
else return y;
}
int main()
{
string str;
double p;
int s,pos;
int h=0;
while(cin>>str)
{
if(str == "buy")
{
cin>>p>>s;
node[h].type = 0;
node[h].p = p;
node[h].s = s;
h++;
}
else if(str == "sell")
{
cin>>p>>s;
node[h].type = 1;
node[h].p = p;
node[h].s = s;
h++;
}
else
{
cin>>pos;
for(int i=pos;i<h;i++)
node[i-1] = node[i];
h--;
}
}
int h1=0,h2=0;
for(int i=0;i<h;i++)
{
if(node[i].type == 0)
{
buy[h1]= node[i];
h1++;
}
else
{
sell[h2] = node[i];
h2++;
}
}
sort(buy,buy+h1,BUY);
sort(sell,sell+h2,SELL);
double price=-100;
int i=0,j=0,k=0,maxs=-100;
//如果有多个符合条件的开盘价,你的程序应当输出最高的那一个。
for(k=0;k<h1;k++)
{
double p0 = buy[k].p;
int buy_sum=0,sell_sum=0;
for(i=0;i<h1;i++)
{
if(buy[i].p>=p0)
buy_sum+=buy[i].s;
else
break;
}
for(i=0;i<h2;i++)
{
if(sell[i].p<=p0)
sell_sum+=sell[i].s;
else
break;
}
int num = min(buy_sum,sell_sum);
if(num>maxs)
{
maxs = num;
price = p0; //满足成交量最大情况下,最大的sell
}
else if(num == maxs && p0>price)
price = p0;
}
for(k=0;k<h2;k++)
{
double p0 = sell[k].p;
int buy_sum=0,sell_sum=0;
for(i=0;i<h1;i++)
{
if(buy[i].p>=p0)
buy_sum+=buy[i].s;
else
break;
}
for(i=0;i<h2;i++)
{
if(sell[i].p<=p0)
sell_sum+=sell[i].s;
else
break;
}
int num = min(buy_sum,sell_sum);
if(num>maxs)
{
maxs = num;
price = p0; //满足成交量最大情况下,最大的sell
}
else if(num == maxs && p0>price)
price = p0;
}
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout<<price;
printf(" %d",maxs);
return 0;
}