社区讨论

30分求改必关注

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mlnu7wpd
此快照首次捕获于
2026/02/15 22:25
4 天前
此快照最后确认于
2026/02/16 18:12
3 天前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
    int c,m,e,z,num;
}a[10001];
int m[10001];
bool cmp(node a,node b){
    if(a.z!=b.z){
        return a.z>b.z;
    }else{
        if(a.c+a.m!=b.c+b.m){
            return a.c+a.m>b.c+b.m;
        }else{
            if(max(a.c,a.m)!=max(b.c,b.m)){
                return max(a.c,a.m)>max(b.c,b.m);
            }else{
                return 0;
            }
        }
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].c>>a[i].m>>a[i].e;
        a[i].num=i;
        a[i].z=a[i].c+a[i].e+a[i].m;
    }
    sort(a+1,a+1+n,cmp);
    int zj=0;
    int zf=-999,cmzf=-999,cmmax=-999;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[j].num==i){
                if(a[j].z==zf&&a[j].c+a[j].m==cmzf&&max(a[j].c,a[j].m)==cmmax){
                    zj++;
                    cout<<j-zj<<endl;
                }else{
                    zf=a[j].z;
                    cmzf=a[j].c+a[j].m;
                    cmmax=max(a[j].c,a[j].m);
                    cout<<j<<endl;
                }
            }
        }
    }
    return 0;
}
有点示山别介意

回复

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

正在加载回复...