弱鸡调了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;
} ```
(可能上学回复大佬们信息不很及时见谅)