社区讨论

求助!只过了第一个测试点

P1786帮贡排序参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo8sedtc
此快照首次捕获于
2023/10/27 23:47
2 年前
此快照最后确认于
2023/10/27 23:47
2 年前
查看原帖
只过了第一个。。。。。 修改了好久,救救孩子吧!
CPP
#include<bits/stdc++.h>
using namespace std;
struct inf{
	string name,pro;
	int grade,id;
	long long gong;
};
bool cmp(inf x,inf y){
	if(x.gong==y.gong) return x.id<y.id; 
	return x.gong>y.gong;
}
bool cmp2(inf x,inf y){
	if(x.grade==y.grade) return x.id<y.id;
	return x.grade>y.grade;
}
int main(){
	int n;
	struct inf a[112];
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i].name>>a[i].pro>>a[i].gong>>a[i].grade;
		a[i].id=i;
	}
	sort(a+3,a+n,cmp);
	for(int i=3;i<n;i++){
		if(n>=4)
		sort(a+3,a+5,cmp2);
		else
		sort(a+3,a+n,cmp2);
		if(i<=4){
			a[i].pro="HuFa";
			continue;
		}
		if(n>=8)
		sort(a+5,a+9,cmp2);
		else
		sort(a+5,a+n,cmp2);
		if(i<=8){
			a[i].pro="ZhangLao";
			continue;
		}
		if(n>=15)
		sort(a+9,a+16,cmp2);
		else
		sort(a+9,a+n,cmp2);
		if(i<=15){
			a[i].pro="TangZhu";
			continue;
		}
		if(n>=40)
		sort(a+15,a+41,cmp2);
		else
		sort(a+15,a+n,cmp2);
		if(i<=40){
			a[i].pro="JingYing";
			continue;
		}
		sort(a+41,a+n,cmp2);
		a[i].pro="BangZhong";
		
	}
	for(int i=0;i<n;i++){
		printf("%s %s %d\n",a[i].name.c_str(),a[i].pro.c_str(),a[i].grade);
	}
}

回复

0 条回复,欢迎继续交流。

正在加载回复...