满江红!!!求救!!!代码略长,闭关
查看原帖
满江红!!!求救!!!代码略长,闭关
1761184
gmrisme55555楼主2025/7/2 13:34

代码太长了,求大佬们仔细阅读,就是无法并列排名

#include<bits/stdc++.h>
using namespace std;
struct node{
    int chinese,maths,english,number,cme,cm,mcm;
};
struct node2{
    int number,mingci;
};
bool cmp(node x,node y){
    if(x.cme!=y.cme){
        return x.cme>y.cme;
    }else if(x.cm>y.cm){
        return x.cm>y.cm;
    }else if(x.mcm>y.mcm){
        return x.mcm>y.mcm;
    }else{
        return x.number<y.number;
    }
}
bool cmp2(node2 x,node2 y){
    return x.number<y.number;
}
int main(){
    int n;
    cin>>n;
    node a[10005];
    node2 b[10005];
    for(int i=1;i<=n;i++){
        cin>>a[i].chinese>>a[i].maths>>a[i].english;
        a[i].number=i;
        a[i].cme=a[i].chinese+a[i].maths+a[i].english;
        a[i].cm=a[i].chinese+a[i].maths;
        a[i].mcm=max(a[i].chinese,a[i].maths);
        b[i].mingci=a[i].number;
    }
    sort(a+1,a+n+1,cmp);
    int c[10005]={};
    for(int i=1;i<=n;i++){
        if(a[i].cme==a[i-1].cme){
            if(a[i].cm==a[i-1].cm){
                if(a[i].mcm==a[i-1].mcm){
                    c[i]=a[i-1].number;
                }else{
                    c[i]=a[i].number;
                }
            }else{
                c[i]=a[i].number;
            }
        }else{
            c[i]=a[i].number;
        }
    }
    for(int i=1;i<=n;i++){
        b[i].number=c[i];
    }
    sort(b+1,b+n+1,cmp2);
    for(int i=1;i<=n;i++){
        cout<<b[i].mingci<<'\n';
    }
    return 0;
}

当然我知道我代码实在没必要

0分

2025/7/2 13:34
加载中...