给这个弱鸡一个解法,我还你一个关注!
  • 板块P1786 帮贡排序
  • 楼主YONIC
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/7/30 12:19
  • 上次更新2023/10/27 17:44:33
查看原帖
给这个弱鸡一个解法,我还你一个关注!
536439
YONIC楼主2022/7/30 12:19

20pts,WA

#include<bits/stdc++.h>
using namespace std;
struct M{string name;int job,banggong,level;};
M bangzhu,fubangzhu1,fubangzhu2;
M a[113];
map<string,int>M2;
int n,tot;
bool cmp2(M x,M y){return x.level>y.level;}
bool cmp(M x,M y){
	if(x.banggong!=y.banggong){
		if(x.banggong>y.banggong) return 1;
		return 0;
	}
	return cmp2(x,y);
}
int main(){
	M2["BangZhu"]=1;
	M2["FuBangZhu"]=2;
	M2["HuFa"]=3;
	M2["ZhangLao"]=4;
	M2["TangZhu"]=5;
	M2["JingYing"]=6;
	M2["BangZhong"]=7;
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		M x;
		cin>>x.name;
		string y;
		cin>>y;
		x.job=M2[y];
		scanf("%d%d",&x.banggong,&x.level);
		if(x.job==1) bangzhu=x;
		else if(x.job==2){
			if(fubangzhu1.job) fubangzhu2=x;
			else fubangzhu1=x;
		}
		else a[++tot]=x;
	}
	sort(a+1,a+1+tot,cmp);
	cout<<bangzhu.name<<' ';
	printf("BangZhu %d\n",bangzhu.level);
	cout<<fubangzhu1.name<<' ';
	printf("FuBangZhu %d\n",fubangzhu1.level);
	cout<<fubangzhu2.name<<' ';
	printf("FuBangZhu %d\n",fubangzhu2.level);
	if(tot>=1) sort(a+1,a+3,cmp2);
	if(tot>=3) sort(a+3,a+min(7,1+tot),cmp2);
	if(tot>=7) sort(a+7,a+min(14,1+tot),cmp2);
	if(tot>=14) sort(a+14,a+min(39,1+tot),cmp2);
	if(tot>=39) sort(a+39,a+1+tot,cmp2);
	for(int i=1;i<=tot;++i){
		cout<<a[i].name<<' ';
		if(i<=2) cout<<"HuFa ";
		else if(i<=6) cout<<"ZhangLao ";
		else if(i<=13) cout<<"TangZhu ";
		else if(i<=38) cout<<"JingYing ";
		else cout<<"BangZhong ";
		printf("%d\n",a[i].level);
	}
	return 0;
}
2022/7/30 12:19
加载中...