求助90
查看原帖
求助90
700986
IkunFriendsChat楼主2023/1/4 07:25

#6WA

#include<bits/stdc++.h>
using namespace std;
struct players
{
	string nm,jb;//nm名字,jb工作 
	long long rp,lv;//rp经验,lv等级
	long long od;//od输入顺序 
}ps[114];
long long n,i;
int wryyyyy=2;//NO BIRD THIS
int val(string a)
{
	if(ps[i].jb=="BangZhu")return 1;
	else if(ps[i].jb=="FuBangZhu")return 2;
	else if(ps[i].jb=="HuFa")return 3;
	else if(ps[i].jb=="Zhanglao")return 4;
	else if(ps[i].jb=="TangZhu")return 5;
	else if(ps[i].jb=="JingYing")return 6;
	else return 7;
}
bool cmp1(players a,players b)
{
	if(a.rp!=b.rp)return a.rp>b.rp;
	else return a.od<b.od;
}
bool cmp2(players a,players b)
{
	if(a.jb==b.jb)
	{
		if(a.lv==b.lv)return a.od<b.od;
		else return a.lv>b.lv;
	}
	else return val(a.jb)<val(b.jb);
}
int main()
{
	cin.tie(0);
	scanf("%lld",&n);
	for(i=1;i<=n;i++)
	{
		cin>>ps[i].nm>>ps[i].jb;
		scanf("%lld%lld",&ps[i].rp,&ps[i].lv);
		ps[i].od=i;
	}
	for(i=1;i<=n;i++)
	{
		if(ps[i].jb=="BangZhu"&&i>1)
		swap(ps[i],ps[1]);
		else if(ps[i].jb=="FuBangZhu"&&i!=wryyyyy)
		swap(ps[i],ps[wryyyyy++]);
	}
	if(ps[2].rp>ps[3].rp||ps[2].rp==ps[3].rp&&ps[2].od>ps[3].od)
	swap(ps[2],ps[3]);
	stable_sort(ps+4,ps+n+1,cmp1);
	for(i=1;i<=n;i++)
	{
		if(i==1)ps[i].jb="BangZhu";
		else if(i==2||i==3)ps[i].jb="FuBangZhu";
		else if(i==4||i==5)ps[i].jb="HuFa";
		else if(i>=6&&i<=9)ps[i].jb="ZhangLao";
		else if(i>=10&&i<=16)ps[i].jb="TangZhu";
		else if(i>=17&&i<=41)ps[i].jb="JingYing";
		else ps[i].jb="BangZhong";
	}
	stable_sort(ps+4,ps+n+1,cmp2);
	for(i=1;i<=n;i++)
	{
		cout<<ps[i].nm<<' '<<ps[i].jb;
		//cout<<' '<<ps[i].rp;
		printf(" %lld\n",ps[i].lv);
	}
}
2023/1/4 07:25
加载中...