社区讨论
70分求助
P1786帮贡排序参与者 4已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @lo2z0c6v
- 此快照首次捕获于
- 2023/10/23 22:05 2 年前
- 此快照最后确认于
- 2023/10/23 22:05 2 年前
源代码:
CPP#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[5]={2,4,7,25,110},b[5],t;
struct faction{
string name,posts;
long long banggong;
int grade,before;
}factions[110];
string posts="BangZhuFuBangZhuHuFaZhangLaoTangZhuJingYingBangZhong",s[5]={"HuFa","ZhangLao","TangZhu","JingYing","BangZhong"};
bool cmp1(faction a,faction b){
return a.banggong>b.banggong;
}
bool cmp2(faction a,faction b){
if(posts.find(a.posts)==posts.find(b.posts)){
if (a.grade==b.grade)return a.before<b.before;
return a.grade>b.grade;
}
return posts.find(a.posts)<posts.find(b.posts);
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
cin>>factions[i].name>>factions[i].posts;
scanf("%d%d",&factions[i].banggong,&factions[i].grade);
factions[i].before=i;
}
sort(factions,factions+n,cmp1);
for(int i=0;i<n;i++){
if(factions[i].posts=="BangZhu"||factions[i].posts=="FuBangZhu")continue;
factions[i].posts=s[t];
b[t]++;
if(a[t]==b[t])t++;
}
sort(factions,factions+n,cmp2);
for(int i=0;i<n;i++){
cout<<factions[i].name<<' '<<factions[i].posts;
printf(" %d\n",factions[i].grade);
}
return 0;
}
测试点信息:

回复
共 8 条回复,欢迎继续交流。
正在加载回复...