1 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=1e4+10; struct Stu{ int t1,t2,maxv; int yuwen,shuxue,yingyu; int id,rank; }s[N]; bool cmp1(Stu a,Stu b) { if(a.t1>b.t1) return 1; if(a.t1==b.t1&&a.t2>b.t2) return 1; if(a.t1==b.t1&&a.t2==b.t2&&a.maxv>b.maxv) return 1; return 0; } bool cmp2(Stu a,Stu b) { if(a.id<b.id) return 1; return 0; } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>s[i].yuwen>>s[i].shuxue>>s[i].yingyu; s[i].t1=s[i].yuwen+s[i].shuxue+s[i].yingyu; s[i].t2=s[i].yuwen+s[i].shuxue; s[i].maxv=max(s[i].yuwen,s[i].shuxue); s[i].id=i; } sort(s+1,s+n+1,cmp1); //按照指定规则进行排名 for(int i=1;i<=n;i++) //分数相同的排名合并 { s[i].rank=i; if(s[i].t1==s[i-1].t1&&s[i].t2==s[i-1].t2&&s[i].maxv==s[i-1].maxv) { s[i].rank=s[i-1].rank; } } sort(s+1,s+n+1,cmp2); //按照编号从小到大排序 for(int i=1;i<=n;i++) { cout<<s[i].rank<<endl; } return 0; }
- 1
Information
- ID
- 2169
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 9
- Tags
- # Submissions
- 18
- Accepted
- 2
- Uploaded By