求助大佬,样例过了,但只A了第一个点
查看原帖
求助大佬,样例过了,但只A了第一个点
412595
hereiszd楼主2021/5/3 16:48

rt

#include<bits/stdc++.h>
using namespace std;
struct people{
	string name;
	string zhiwei;
	long long int banggong;
	int dengji;
	int num;
}n[120];
bool cmp1(people a,people b){
	if(a.banggong==b.banggong&&a.dengji==b.dengji)return a.num<b.num;
	else if(a.banggong==b.banggong)return a.dengji>b.dengji;
	else return a.banggong>b.banggong;
}
int h(people a){
	if(a.zhiwei=="BangZhu") return 7;
	if(a.zhiwei=="FuBangZhu") return 6;
	if(a.zhiwei=="HuFa") return 5;
	if(a.zhiwei=="ZhangLao") return 4;
	if(a.zhiwei=="TangZhu") return 3;
	if(a.zhiwei=="JingYing") return 2;
	if(a.zhiwei=="BangZhong") return 1;
}
bool cmp2(people a,people b){
	if(h(a)==h(b)) return a.dengji>b.dengji;
	return h(a)>h(b);
}

int main(){
	people r;
	int p;
	cin>>p;
	int mp=0;
	for(int i=p-3;i<p;i++){
		cin>>n[i].name>>n[i].zhiwei>>n[i].banggong>>n[i].dengji;
		n[i].num=mp++;
	}
	for(int i=0;i<p-3;i++){
		cin>>n[i].name>>n[i].zhiwei>>n[i].banggong>>n[i].dengji;
		n[i].num=mp++;
	}
	sort(n,n+p-2,cmp1);
	int j=1;
	int lp=p-3;
	while(lp--){
		if(j<3) n[j].zhiwei="HuFa";
		else if(j<7) n[j].zhiwei="ZhangLao";
		else if(j<14) n[j].zhiwei="TangZhu";
		else if(j<39) n[j].zhiwei="JingYing";
		else	n[j].zhiwei="BangZhong";
		j++;
	}
	sort(n,n+p+1,cmp2);
	for(int i=0;i<p;i++){
		cout<<n[i].name<<" "<<n[i].zhiwei<<" "<<n[i].dengji<<endl;
	}
}
2021/5/3 16:48
加载中...