社区讨论

0分求调,必关

B3968[GESP202403 五级] 成绩排序参与者 2已保存回复 12

讨论操作

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

当前回复
12 条
当前快照
1 份
快照标识符
@mjpon9qe
此快照首次捕获于
2025/12/28 20:05
2 个月前
此快照最后确认于
2026/01/01 08:45
2 个月前
查看原帖
CPP
#include<cmath>
#include<bits/stdc++.h>
using namespace std;
int n1,a;
struct cj
{
	int yw;
	int sx;
	int yy;
	int pm;
	int xh;
}n[1004];
bool cmp(struct cj x,struct cj y){
	if(x.yw+x.sx+x.yy!=y.yw+y.sx+y.yy)return x.yw+x.sx+x.yy>y.yw+y.sx+y.yy;
	if(x.yw+x.sx!=y.yw+y.sx)return x.yw+x.sx>y.yw+y.sx;
	if(max(x.yw,x.sx)!=max(y.yw,y.sx))return max(x.yw,x.sx)>max(y.yw,y.sx);
	return x.yw+x.sx+x.yy==y.yw+y.sx+y.yy;
}
bool cmp1(struct cj x,struct cj y){
	return x.xh<y.xh;
}
int main()
{
	cin>>n1;
	for(int i=1;i<=n1;i++){
		cin>>n[i].yw>>n[i].sx>>n[i].yy;
		n[i].xh=i;
	}
	sort(n+1,n+n1+1,cmp);
	for(int i=1;i<=n1;i++){
		if(n[i].yw+n[i].sx+n[i].yy==n[i-1].yw+n[i-1].sx+n[i-1].yy && n[i].yw+n[i].sx==n[i-1].yw+n[i-1].sx){
			if(max(n[i].yw,n[i].sx)!=max(n[i-1].yw,n[i-1].sx)){
				n[i].pm=a;
			}
			else {
				n[i].pm=i;
				a=i;
			}
		}
		else {
			n[i].pm=i;
			a=i;
		}
	}
	sort(n+1,n+n1+1,cmp1);
	for(int i=1;i<=n1;i++){
		cout<<n[i].pm<<"\n";
	}
}

回复

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

正在加载回复...