#include<bits/stdc++.h>
#include<string>
using namespace std;
int n;
struct Node{//存储人的信息
int num;
string name;
int bg,lev;
}ren[150];
int num_ren=0;//存储人的个数
bool cmp_bg(Node x,Node y){//帮贡排序的cmp
if(x.bg==y.bg) return x.num<y.num;
return x.bg>y.bg;
}
bool cmp_lev(Node x,Node y){//等级排序的cmp
if(x.lev==y.lev) return x.num<y.num;
return x.lev>y.lev;
}
string yz[150];//存储职位名称
int main(){
//一下为yz数组的初始化,因为职位是往下顺延的
for(int i=1;i<=2;i++) yz[i]="HuFa";
for(int i=3;i<=6;i++) yz[i]="ZhangLao";
for(int i=7;i<=13;i++) yz[i]="TangZhu";
for(int i=14;i<=38;i++) yz[i]="JingYing";
for(int i=39;i<=130;i++) yz[i]="BangZhong";
cin>>n;
for(int i=1;i<=n;i++) ren[i].num=i;//人num的初始化,方便后续等级相同按照原顺序排序
if(n==1) for(int i=1;i<=1;i++){//特殊判断
string name,ss;
int a,b;
cin>>name>>ss>>a>>b;
cout<<name<<" "<<ss<<" "<<b<<endl;
return 0;
}
if(n==2){//特殊判断
for(int i=1;i<=2;i++){
string name,ss;
int a,b;
cin>>name>>ss>>a>>b;
cout<<name<<" "<<ss<<" "<<b<<endl;
}return 0;
}
if(n==3){//特殊判断
for(int i=1;i<=3;i++){
string name,ss;
int a,b;
cin>>name>>ss>>a>>b;
cout<<name<<" "<<ss<<" "<<b<<endl;
}return 0;
}
if(n>3) for(int i=1;i<=3;i++){//前三个,读入后直接输出
string name,ss;
int a,b;
cin>>name>>ss>>a>>b;
cout<<name<<" "<<ss<<" "<<b<<endl;
}
for(int i=1;i<=n-3;i++){//后面的读入
string ss;
num_ren++;
cin>>ren[num_ren].name>>ss>>ren[num_ren].bg>>ren[num_ren].lev;
}
sort(ren+1,ren+num_ren,cmp_bg);//按照帮贡排序
//下面的是按照等级排序
sort(ren+1,ren+3,cmp_lev);
sort(ren+3,ren+7,cmp_lev);
sort(ren+7,ren+14,cmp_lev);
sort(ren+14,ren+39,cmp_lev);
sort(ren+39,ren+130,cmp_lev);
//输出剩下的
for(int i=1;i<=num_ren;i++){
cout<<ren[i].name<<" "<<yz[i]<<" "<<ren[i].lev<<endl;
}
}
这是代码,求助