真蚌埠住了,求求各位大佬帮忙。(10分wa#2~#10)
查看原帖
真蚌埠住了,求求各位大佬帮忙。(10分wa#2~#10)
755660
123456zzr楼主2023/4/16 21:05

弱鸡调了4个小时还是WA#2~#10自大闭,球球各位大佬帮忙。悬赏关注。 代码如下:

#include<bits/stdc++.h>
using namespace std;
struct ledou{
	long long gong,deng,rp;//帮贡,等级,输入顺序
	string zhi,ming;//职位,名字
}a[123];
long long n,cik;
int cmp1(ledou a,ledou b)//第一次排序
{
	if(a.gong!=b.gong)
	return a.gong>b.gong;
	else
	return a.rp<b.rp;
}
int zhuan(ledou a)//方便职位比较
{
	if(a.zhi=="Bangzhu")
		return 1;
	if(a.zhi=="FuBangzhu")
		return 2;
	if(a.zhi=="HuFa")
		return 3;
	if(a.zhi=="ZhangLao")
		return 4;
	if(a.zhi=="TangZhu")
		return 5;
	if(a.zhi=="JingYing")
		return 6;
	if(a.zhi=="BangZhong")
		return 7;
}
int cmp2(ledou a,ledou b)//第二趟排序
{
	if(a.zhi!=b.zhi)
	{
		return zhuan(a)<zhuan(b);
	}else
	{
		if(a.deng!=b.deng)
		return a.deng>b.deng;
		else
		return a.rp<b.rp;
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].ming>>a[i].zhi>>a[i].gong>>a[i].deng;
		a[i].rp=i;
	}
	sort(a+1,a+n+1,cmp1);
	cik=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i].zhi!="BangZhu"&&a[i].zhi!="FuBangZhu")
		{
			cik++;//cik表述已经授予多少人职权
			if(cik<=38)
			{ 
				if(cik==1||cik==2)
					a[i].zhi="HuFa";
				else
				{
					if(cik>=3&&cik<=6)
						a[i].zhi="ZhangLao";
					else
					{
						if(cik>=7&&cik<=13)
							a[i].zhi="BangZhu";
						else
						{
							a[i].zhi="JingYing";
						}
					}
				}
			}else
			{
				a[i].zhi="BangZhong";
			}
		}
	}
	sort(a+1,a+n+1,cmp2);
	for(int i=1;i<=n;i++)
	{
		cout<<a[i].ming<<" "<<a[i].zhi<<" "<<a[i].deng<<endl;
	}
	return 0;
 } ```
 (可能上学回复大佬们信息不很及时见谅)
2023/4/16 21:05
加载中...