大佬们看看吧,#3#4#5一直过不了
查看原帖
大佬们看看吧,#3#4#5一直过不了
1529607
zhagghfhgf楼主2024/12/12 19:43

大佬想问下这个代码错在哪里了? 就是#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;	

}

2024/12/12 19:43
加载中...