80分求助,wa#7#10
查看原帖
80分求助,wa#7#10
936120
1711Elegy楼主2023/7/18 14:34
#include<bits/stdc++.h>
#include<string>
using namespace std;
int n;
struct Node{//存储人的信息 
	int num;
	string name;
	int bg,lev;
}ren[150];
int num_ren=0;//存储人的个数 
bool cmp_bg(Node x,Node y){//帮贡排序的cmp 
	if(x.bg==y.bg) return x.num<y.num;
	return x.bg>y.bg; 
}
bool cmp_lev(Node x,Node y){//等级排序的cmp 
	if(x.lev==y.lev) return x.num<y.num;
	return x.lev>y.lev;
}
string yz[150];//存储职位名称 
int main(){
	//一下为yz数组的初始化,因为职位是往下顺延的 
	for(int i=1;i<=2;i++) yz[i]="HuFa";
	for(int i=3;i<=6;i++) yz[i]="ZhangLao";
	for(int i=7;i<=13;i++) yz[i]="TangZhu";
	for(int i=14;i<=38;i++) yz[i]="JingYing";
	for(int i=39;i<=130;i++) yz[i]="BangZhong";
	
	cin>>n;
	
	for(int i=1;i<=n;i++) ren[i].num=i;//人num的初始化,方便后续等级相同按照原顺序排序 
	
	if(n==1) for(int i=1;i<=1;i++){//特殊判断 
		string name,ss;
		int a,b;
		cin>>name>>ss>>a>>b;
		cout<<name<<" "<<ss<<" "<<b<<endl;
		return 0;
	}
	if(n==2){//特殊判断 
		for(int i=1;i<=2;i++){
			string name,ss;
			int a,b;
			cin>>name>>ss>>a>>b;
			cout<<name<<" "<<ss<<" "<<b<<endl;
		}return 0;
	} 
	if(n==3){//特殊判断 
		for(int i=1;i<=3;i++){
			string name,ss;
			int a,b;
			cin>>name>>ss>>a>>b;
			cout<<name<<" "<<ss<<" "<<b<<endl;
			
		}return 0;
	}
	if(n>3) for(int i=1;i<=3;i++){//前三个,读入后直接输出 
		string name,ss;
		int a,b;
		cin>>name>>ss>>a>>b;
		cout<<name<<" "<<ss<<" "<<b<<endl;
	}	
	for(int i=1;i<=n-3;i++){//后面的读入 
		string ss;
		num_ren++;
		cin>>ren[num_ren].name>>ss>>ren[num_ren].bg>>ren[num_ren].lev;
	}
	sort(ren+1,ren+num_ren,cmp_bg);//按照帮贡排序 
	//下面的是按照等级排序 
	sort(ren+1,ren+3,cmp_lev);
	sort(ren+3,ren+7,cmp_lev);
	sort(ren+7,ren+14,cmp_lev);
	sort(ren+14,ren+39,cmp_lev);
	sort(ren+39,ren+130,cmp_lev);
	//输出剩下的 
	for(int i=1;i<=num_ren;i++){
		cout<<ren[i].name<<" "<<yz[i]<<" "<<ren[i].lev<<endl;
	}
}

这是代码,求助

2023/7/18 14:34
加载中...