存TWS要用double存,比较,输出的时候用int,最后一个测试点(3’);
#includeusing namespace std; int n,cnt=1; unordered_map mm; unordered_map nn; struct node{ string name; double tws=0; int ns=0,rank; }v[100010]; string change(string ans){ string an=""; for(auto i:ans){ char c=tolower(i); an.push_back(c); } return an; } double ch(string a,double cum){ if(a[0]=='B') cum=cum/1.5; else if(a[0]=='T') cum=cum*1.5; return cum; } bool cmp(node a,node b){ if((int)a.tws==(int)b.tws){ if(a.ns==b.ns) return a.name (int)b.tws; } int main(){ cin>>n; for(int i=0;i >a>>b>>c; c=change(c); b=ch(a,b); int num; if(mm[c]){ num=mm[c]; } else{ num=cnt++; mm[c]=num; nn[num]=c; } v[num].name=c; v[num].tws+=b; v[num].ns+=1; } sort(v+1,v+cnt,cmp); int r=1,time=1; printf("%dn",cnt-1); for(int i=1;i



