这代码是怎么回事?
连样例都过不了
提交上去RE了……
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int n;
struct OOT{
string name;
string job;
string job_;
long long tribute;
int grade;
int id;
}a[111];
int number(string x){
if(x=="BangZhu")return 1;
if(x=="FuBangZhu") return 2;
if(x=="HuFa") return 3;
if(x=="ZhangLao") return 4;
if(x=="TangZhu") return 5;
if(x=="JingYing") return 6;
if(x=="BangZhong") return 7;
}
int cmp1(OOT px1,OOT px2){
if(px1.tribute==px2.tribute){
return px1.id<px2.id;
}else{
return px1.tribute>px2.tribute;
}
}
int cmp2(OOT px1,OOT px2){
if(number(px1.job_)==number(px2.job_)){
if(px1.grade==px2.grade){
return px1.id<px2.id;
}else{
return px1.grade>px2.grade;
}
}else{
number(px1.job_)<number(px2.job_);
}
}
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].job>>a[i].tribute>>a[i].grade;
a[i].id=i;
}
sort(a+4,a+n-1,cmp1);
for (int i=1;i<=n;i++){
if (i==1) a[i].job_="BangZhu";
else if (i==2||i==3) a[i].job_="FuBangZhu";
else if (i==4||i==5) a[i].job_="HuFa";
else if (i>=6&&i<=9) a[i].job_="ZhangLao";
else if (i>=10&&i<=16) a[i].job_="TangZhu";
else if (i>=17&&i<=41) a[i].job_="JingYing";
else a[i].job_="BangZhong";
}
sort(a+1,a+n-1,cmp2);
for(int i=1;i<=n;i++){
cout <<a[i].name<<" "<<a[i].job<<" "<<a[i].grade<<endl;
}
return 0;
}
求助
谢谢!ヽ(○^㉨^)ノ♪