第二个排序似乎不对~~~~
  • 板块P1786 帮贡排序
  • 楼主virgil
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/2/19 18:01
  • 上次更新2023/10/28 08:09:21
查看原帖
第二个排序似乎不对~~~~
579211
virgil楼主2022/2/19 18:01
using namespace std;
struct person{
	string name,poisition;
	int c,rank,number;
}a[200];
int n;
bool cmp(person x,person y){
	if(x.c!=y.c)
		return x.c>y.c;
	return x.number<y.number;
}
bool cmp2(person x,person y){
	if(x.poisition==y.poisition&&x.rank!=y.rank)
		return x.rank>y.rank;
	return x.number<y.number;
}
int main()
{
	scanf("%d",&n);
	for(int i=0;i<n;++i){
		cin>>a[i].name>>a[i].poisition>>a[i].c>>a[i].rank;
		a[i].number=i;
	}
	sort(a+3,a+n,cmp);
	for(int i=3;i<n;++i){
		if(i<=4)
			a[i].poisition="HuFa";
		else if(i<=8)
				a[i].poisition="ZhangLao";
		else if(i<=15)
				a[i].poisition="TangZhu";
		else if(i<=40)
				a[i].poisition="JingYing";
		else a[i].poisition="BangZhong";
	}
	for(int i=4;i<n;++i){
		if(i==4)
			sort(a+3,a+4,cmp2);
		else if(i<=8&&i>5)
			sort(a+5,a+i,cmp2);
		else if(i>9&&i<=15)
			sort(a+9,a+i,cmp2);
		else if(i>16&&i<=40)
			sort(a+16,a+i,cmp2);
		else if(i>40)break;
	}
	if(n>41)sort(a+41,a+n,cmp2);
	for(int i=0;i<n;++i)
	{
		cout<<a[i].name<<" "<<a[i].poisition<<" "<<a[i].rank<<endl;
	}
	return 0;
}
2022/2/19 18:01
加载中...