#include<iostream>
#include<unordered_map> //更省时间
#include<vector>
#include<algorithm>
using namespace std;
struct school{
string name;
int fullscore,stunum;
};
bool cmp(struct school &a,struct school &b){
if(a.fullscore!=b.fullscore) return a.fullscore>b.fullscore;
else if(a.stunum!=b.stunum) return a.stunum<b.stunum;
else return a.name<b.name;
}
int main(){
int n;
cin>>n;
unordered_map<string,int> mp1;
unordered_map<string,double> mp2;
string stuid,name;
double score;
for(int i=0;i<n;i++){
cin>>stuid>>score>>name;
for(int i=0;i<name.length();i++)
name[i]=tolower(name[i]);
mp1[name]++;
if(stuid[0]=='B') score/=1.5;
if(stuid[0]=='T') score*=1.5;
mp2[name]+=score;
}
vector<school> v;
for(auto it=mp1.begin();it!=mp1.end();it++)
v.push_back(school{it->first,(int)mp2[it->first],it->second}); //注意写法
sort(v.begin(),v.end(),cmp);
cout<<v.size()<<endl;
int pre=-1,rank=0;
for(int i=0;i<v.size();i++){
if(v[i].fullscore!=pre) rank=i+1;
pre=v[i].fullscore;
printf("%d %s %d %d\n",rank,v[i].name.c_str(),v[i].fullscore,v[i].stunum);
}
return 0;
}
PAT乙级-1085 PAT单位排行 (25 分)
最新推荐文章于 2024-07-21 13:38:21 发布