1 条题解

  • 1
    @ 2025-12-24 9:11:47
    #include <bits/stdc++.h>
    using namespace std;
    struct st{
    	int wz,mc,a,b,c,z;
    }s[100010];
    bool cmp(st s1,st s2){
    	if(s1.z==s2.z){
    		int sb=s1.a+s1.b,sb1=s2.a+s2.b;
    		if(sb==sb1){
    			int x=max(s1.a,s1.b),y=max(s2.a,s2.b);
    			return x>y;
    		}else{
    			return sb>sb1;
    		}
    	}else{
    		return s1.z>s2.z;
    	}
    }
    bool cmp2(st l,st r){
    	return l.wz<r.wz;
    }
    int n;
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>s[i].a>>s[i].b>>s[i].c;
    		s[i].z=s[i].a+s[i].b+s[i].c;
    		s[i].wz=i;
    	}
    	sort(s+1,s+1+n,cmp);
    	s[1].mc=1;
        for(int i=2;i<=n;i++){
            bool f=0;
            if (s[i].z==s[i-1].z){
                int sb1=s[i].a+s[i].b,sb2=s[i-1].a+s[i-1].b;
                if(sb1==sb2){
                    int ma=max(s[i].a,s[i].b),ma1=max(s[i-1].a,s[i-1].b);
                    if(ma==ma1){
                        f=1;  
                    }
                }
            }
            if(f){
                s[i].mc=s[i-1].mc;
            }else{
                s[i].mc=i;
            }
        }
        sort(s+1,s+1+n,cmp2);
        for(int i=1;i<=n;i++) {
            cout<<s[i].mc<<endl;
        }
    	return 0;
    }
    
    

    信息

    ID
    5072
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    7
    已通过
    3
    上传者