20pts,WA
#include<bits/stdc++.h>
using namespace std;
struct M{string name;int job,banggong,level;};
M bangzhu,fubangzhu1,fubangzhu2;
M a[113];
map<string,int>M2;
int n,tot;
bool cmp2(M x,M y){return x.level>y.level;}
bool cmp(M x,M y){
if(x.banggong!=y.banggong){
if(x.banggong>y.banggong) return 1;
return 0;
}
return cmp2(x,y);
}
int main(){
M2["BangZhu"]=1;
M2["FuBangZhu"]=2;
M2["HuFa"]=3;
M2["ZhangLao"]=4;
M2["TangZhu"]=5;
M2["JingYing"]=6;
M2["BangZhong"]=7;
scanf("%d",&n);
for(int i=1;i<=n;++i){
M x;
cin>>x.name;
string y;
cin>>y;
x.job=M2[y];
scanf("%d%d",&x.banggong,&x.level);
if(x.job==1) bangzhu=x;
else if(x.job==2){
if(fubangzhu1.job) fubangzhu2=x;
else fubangzhu1=x;
}
else a[++tot]=x;
}
sort(a+1,a+1+tot,cmp);
cout<<bangzhu.name<<' ';
printf("BangZhu %d\n",bangzhu.level);
cout<<fubangzhu1.name<<' ';
printf("FuBangZhu %d\n",fubangzhu1.level);
cout<<fubangzhu2.name<<' ';
printf("FuBangZhu %d\n",fubangzhu2.level);
if(tot>=1) sort(a+1,a+3,cmp2);
if(tot>=3) sort(a+3,a+min(7,1+tot),cmp2);
if(tot>=7) sort(a+7,a+min(14,1+tot),cmp2);
if(tot>=14) sort(a+14,a+min(39,1+tot),cmp2);
if(tot>=39) sort(a+39,a+1+tot,cmp2);
for(int i=1;i<=tot;++i){
cout<<a[i].name<<' ';
if(i<=2) cout<<"HuFa ";
else if(i<=6) cout<<"ZhangLao ";
else if(i<=13) cout<<"TangZhu ";
else if(i<=38) cout<<"JingYing ";
else cout<<"BangZhong ";
printf("%d\n",a[i].level);
}
return 0;
}