大佬想问下这个代码错在哪里了? 就是#3#4#5过不了
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
const int N = 1150;
typedef struct list {
string a;
string b;
long long c;//牓贡
int d;//等级
int e;
}li;
int amber2(li a){
if(a.b == "BangZhu") return 1;
if(a.b == "FuBangZhu") return 2;
if(a.b == "HuFa") return 3;
if(a.b == "ZhangLao") return 4;
if(a.b == "TangZhu") return 5;
if(a.b == "JingYing") return 6;
if(a.b == "BangZhong") return 7;
}
bool cmp(li a, li b) {
if (a.c == b.c)
return a.d < b.d;
return a.c > b.c;
}
bool cmp1(li a,li b){
if(amber2(a) == amber2(b)){
if(a.d == b.d)
return a.e < b.e;
return a.d > b.d;
}
return amber2(a) < amber2(b);
}
int main() {
int n;
cin >> n;
li amber[N];
for (int i = 1;i <= n;i++) {
cin >> amber[i].a >> amber[i].b >> amber[i].c >> amber[i].d;
amber[i].e = i;
}
sort(amber + 4, amber + n + 1, cmp);
for(int i = 1;i <= n;i++){
if(i == 1) amber[i].b = "BangZhu";
else if(i == 2 || i == 3) amber[i].b = "FuBangZhu";
else if(i == 4 || i == 5) amber[i].b = "HuFa";
else if(i >= 6 && i <= 9) amber[i].b = "ZhangLao";
else if(i >= 10 && i <= 16) amber[i].b = "TangZhu";
else if(i >= 17 && i <= 41) amber[i].b = "JingYing";
else amber[i].b = "BangZhong";
}
sort(amber + 1,amber + n + 1,cmp1);
for(int i = 1;i <= n;i++)
cout<<amber[i].a<<" "<<amber[i].b<<" "<<amber[i].d<<endl;
return 0;
}