1 条题解
-
2
#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
- 3191
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 5
- 已通过
- 0
- 上传者