第一个测试点对了 代码如下:
#include<bits/stdc++.h>
using namespace std;
struct guild{
int grade,contribution,id;
string name,position;
}a[150],n1,n2,n3;
int n;
bool cmp(guild a,guild b){
if(a.contribution==b.contribution){
if(a.grade==b.grade)return a.id<b.id;
return a.grade>b.grade;
}
return a.contribution>b.contribution;
}
int main(){
cin>>n;
int j=1;
for(int i=1;i<=n;i++){
guild k;
cin>>k.name>>k.position>>k.contribution>>k.grade;
k.id=j;
if(k.position=="BangZhu"){
n1=k;
}else if(k.position=="FuBangZhu"){
if(n2.grade!=0){
n3=k;
}else{
n2=k;
}
}else{
a[j++]=k;
}
}
sort(a+1,a+n+1,cmp);
cout<<n1.name<<' '<<n1.position<<' '<<n1.grade<<endl;
cout<<n2.name<<' '<<n2.position<<' '<<n2.grade<<endl;
cout<<n3.name<<' '<<n3.position<<' '<<n3.grade<<endl;
for(int i=1;i<j;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 ";
}
cout<<a[i].grade<<endl;
}
return 0;
}