##10分求调 第一个测试点过 谢谢大佬
查看原帖
##10分求调 第一个测试点过 谢谢大佬
1458840
leiyanzhen楼主2024/12/21 13:04
//
/*
1.
2.
3.
4.
*/
#include <bits/stdc++.h>
using namespace std;
int n;
struct node{
	string s;
	string z;
	string zz;
	long long bg;
	int le,h;
}r[10000]; 
int c(string a){
	if(a=="BangZhu")	return 0;
	if(a=="FuBangZhu")  return 1;
	if(a=="HuFa")		return 2;
	if(a=="ZhaoLao")	return 3;
	if(a=="TangZhu")	return 4;
	if(a=="JingYing")	return 5;
	if(a=="BangZhong")	return 6;
}
int cmp(node a,node b){
	if(a.bg==b.bg)		return a.h<b.h;
	else  				return a.h>b.h;
}
int cmpp(node a,node b){
	if(c(a.zz)==c(b.zz)){
		if(a.le==b.le){
			return a.le>b.le;
		}
	}
	return c(a.zz)<c(b.zz);
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>r[i].s>>r[i].z>>r[i].bg>>r[i].le;
	}sort(r+1,r+n+1,cmp);
	for (int i=1;i<=n;i++){
		if (i==1) r[i].zz="BangZhu";
		else if (i==2||i==3) r[i].zz="FuBangZhu";
		else if (i==4||i==5) r[i].zz="HuFa";
		else if (i>=6&&i<=9) r[i].zz="ZhangLao";
		else if (i>=10&&i<=16) r[i].zz="TangZhu";
		else if (i>=17&&i<=41) r[i].zz="JingYing";
		else r[i].zz="BangZhong";
	}
	sort(r+1,r+n+1,cmpp);
	for(int i=1;i<=n;i++){
		cout<<r[i].s<<" "<<r[i].zz<<" "<<r[i].le<<endl;
	}
    return 0;
}

2024/12/21 13:04
加载中...