2 条题解

  • -2
    @ 2026-3-29 11:09:04
    #include <bits/stdc++.h>
    using namespace std;
    struct st{
        int wz,jx,fen,mc,a,b,c;
    };
    bool cmp1(st s1,st s2){
        if(s1.fen==s2.fen){
            int sum1=s1.a+s1.b;
            int sum2=s2.a+s2.b;
            if(sum1==sum2){
                int x=max(s1.a,s1.b);
                int y=max(s2.a,s2.b);
                return x>y;
            }else{
                return sum1>sum2;
            }
        }else{
            return s1.fen>s2.fen;
        }
    }
    bool cmp2(st s1,st s2){
        return s1.wz<s2.wz;
    }
    int n;
    st s[100010];
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>s[i].a>>s[i].b>>s[i].c;
            s[i].fen=s[i].a+s[i].b+s[i].c;
            s[i].wz=i;
        }
        sort(s+1,s+1+n,cmp1);
        s[1].jx=1;
        for(int i=2;i<=n;i++){
            bool same=(s[i].fen==s[i-1].fen)&&
            (s[i].a+s[i].b==s[i-1].a+s[i-1].b)&&
            (max(s[i].a,s[i].b)==max(s[i-1].a,s[i-1].b));
            if(same){
                s[i].jx=s[i-1].jx;
            }else{
                s[i].jx=i;
            }
        }
        sort(s+1,s+1+n,cmp2);
        for(int i=1;i<=n;i++){
            cout<<s[i].jx<<endl;
        }
        return 0;
    }
    
    • -3
      @ 2026-3-31 13:14:13

      成绩排序

      • 1

      信息

      ID
      4777
      时间
      1000ms
      内存
      128MiB
      难度
      2
      标签
      递交数
      7
      已通过
      6
      上传者