RERERERERERERERERERE
查看原帖
RERERERERERERERERERE
355424
Lish_Xizse楼主2021/7/7 11:26

这代码是怎么回事?

连样例都过不了

提交上去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;
}

求助

谢谢!ヽ(○^㉨^)ノ♪

2021/7/7 11:26
加载中...