emm,怎么都是50分怎么办???
查看原帖
emm,怎么都是50分怎么办???
136596
尤斯蒂亚楼主2020/10/29 21:56
//#define LOCAL 
#define INF 1000000000

#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct infor
{
	string name;
	string zhiwei;
	int money;
	int level;
	int turn;
 }que[100000];

int change(string a){
	if (a=="BangZhu") return 0;
	if (a=="FuBangZhu") return 1;
	if (a=="HuFa") return 2;
	if (a=="ZhangLao") return 3;
	if (a=="TangZhu") return 4;
	if (a=="JingYing") return 5;
	if (a=="BangZhong") return 6;
}

bool cmp1(infor x,infor y)
{
	if (x.money==y.money) return x.turn<y.turn;
    else return x.money>y.money;
}
/*
bool cmp2(infor x,infor y)
{
	if (x.zhiwei==y.zhiwei)
		return x.level>y.level;
	else return change(x.zhiwei)<change(y.zhiwei);
}*/

bool cmp3(infor x,infor y)
{
	if (x.zhiwei==y.zhiwei)
		{
			if (x.level==y.level) return x.turn<y.turn;
			else return x.level>y.level;
		}
	else return change(x.zhiwei)<change(y.zhiwei);
}

int main()	
{	
	int save=0;
	int n;
	cin>>n;
	for (int i=1;i<=n;++i)
	{
		cin>>que[i].name>>que[i].zhiwei>>que[i].money>>que[i].level;
		que[i].turn=i;
		if ((save==0)and !( (que[i].zhiwei=="BangZhu")or(que[i].zhiwei=="FuBangZhu") ) ) save=i;
	}
	
	sort(que+save+1,que+n+1,cmp1);
	
	for (int i=1;i<=n;i++)
{
	if (i==1) que[i].zhiwei="BangZhu";
	else if (i==2||i==3) que[i].zhiwei="FuBangZhu";
	else if (i==4||i==5) que[i].zhiwei="HuFa";
	else if (i>=6&&i<=9) que[i].zhiwei="ZhangLao";
	else if (i>=10&&i<=16) que[i].zhiwei="TangZhu";
	else if (i>=17&&i<=41) que[i].zhiwei="JingYing";
	else que[i].zhiwei="BangZhong";
}
	
//	sort(que+1,que+n+1,cmp2);
	sort(que+save+1,que+n+1,cmp3);
	
	for (int i=1;i<=n;++i)
	cout<<que[i].name<<" "<<que[i].zhiwei<<" "<<que[i].level<<endl;
	return 0;
}
2020/10/29 21:56
加载中...