30分求救 回关
查看原帖
30分求救 回关
1445227
hongxiaoyu楼主2025/7/31 17:57
#include <bits/stdc++.h>
using namespace std;
struct ac{
    long long y=0,s=0,w=0,z=0,x=0,p=0;
    bool k=0;
}ab[100000];
bool cmp(ac &a,ac &b){
    if (a.z!=b.z){
        return a.z>b.z;
    }else if(a.y+a.s!=b.y+b.s){
        return a.y+a.s>b.y+b.s;
    }else if(max(a.y,a.s)!=max(b.y,b.s)){
        return max(a.y,a.s)>max(b.y,b.s);
    }else{
        a.k=true;
        b.k=true;
        return  a.x<b.x;
    }
}
bool vmp(ac a,ac b){
    return a.x<b.x;
}
int main(){
    long long n;
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>ab[i].y>>ab[i].s>>ab[i].w;
        ab[i].z=ab[i].y+ab[i].s+ab[i].w;
        ab[i].x=i;
    }
    sort(ab+1,ab+1+n,cmp);
    for (int i=1;i<=n;i++){
        ab[i].p=i;
        long long s=i;
        while(ab[i].k==1){
            ab[i].p=s;
            if (ab[i+1].k!=1){
                break;
            }
            i++;
        }
    }
    sort(ab+1,ab+1+n,vmp);
    for (int i=1;i<=n;i++){
        cout<<ab[i].p<<endl;
    }
}
2025/7/31 17:57
加载中...