#include <iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
struct node{
string school;int sum,count;
};
bool cmp(node &a,node &b){
return a.sum==b.sum?((a.count==b.count)?(a.school<b.school):(a.count<b.count)):(a.sum>b.sum);
}
string& tosmall(string &t)
{
for(int i=0;i<t.size();i++)
{
if(t[i]>='A'&&t[i]<='Z')
t[i]+='a'-'A';
}
return t;
}
int main()
{
map<string,int> c;
map<string,double> s;
int num;
double tsc;
string tmp,tmp2;
cin>>num;
for(int i=0;i<num;i++)
{
cin>>tmp2>>tsc>>tmp;
tmp=tosmall(tmp);
tmp2=tmp2.substr(0,1);
if(tmp2=="T") tsc*=1.5;
else if(tmp2=="B")tsc/=1.5;
c[tmp]++;
s[tmp]+=tsc;
}
vector<node> v(c.size());
int i=0;
for(auto it:c )
{
v[i].school=it.first;
v[i++].count=it.second;
}
i=0;
for(auto it:s)
{
v[i++].sum=it.second;
}
sort(v.begin(),v.end(),cmp);
cout<<v.size()<<endl;
int t=1;
for(int i=0;i<v.size();i++)
{
cout<< t<<" "<<v[i].school<<" "<<v[i].sum<<" "<<v[i].count<<endl;
if(i<v.size()-1&&v[i+1].sum!=v[i].sum) t=i+2;
}
return 0;
}
最后一个测试点没有通过!原来是因为分数要用double类型存储