首页 > 代码库 > 题目1007:奥运排序问题(结构体排序)
题目1007:奥运排序问题(结构体排序)
题目链接:http://ac.jobdu.com/problem.php?pid=1007
详解连接:https://github.com/Pacsiy/JobDu
参考代码:
//// Created by AlvinZH on 2017/4/29.// Copyright (c) AlvinZH. All rights reserved.//#include <iostream>#include <vector>#include <cstdio>#include <algorithm>using namespace std;typedef struct Country{ int id; int gold; int sum; int pop; double gp;//金牌人口比例 double sp;//奖牌人口比例 int R[5]; Country(int a,int b,int c) { gold=a;sum=b;pop=c; gp=(double)a/c; sp=(double)b/c; }}Country;vector<Country> ALL;vector<Country> C;bool cmp1(Country a,Country b){ return a.gold>b.gold;}bool cmp2(Country a,Country b){ return a.sum>b.sum;}bool cmp3(Country a,Country b){ return a.gp>b.gp;}bool cmp4(Country a,Country b){ return a.sp>b.sp;}bool cmp5(Country a,Country b){ return a.id<b.id;}int main(){ int n,m; while(~scanf("%d %d",&n,&m)) { ALL.clear(); C.clear(); int a,b,c; for(int i=0;i<n;i++) { scanf("%d%d%d",&a,&b,&c); ALL.push_back(Country(a,b,c)); } for(int i=0;i<m;i++) { scanf("%d",&a); C.push_back(ALL[a]); C[i].id=i; } sort(C.begin(),C.end(),cmp1); for(int i=0;i<n;i++) { int rank=i; while(rank>0&&C[i].gold==C[rank-1].gold) rank--; C[i].R[1]=rank+1; } sort(C.begin(),C.end(),cmp2); for(int i=0;i<n;i++) { int rank=i; while(rank>0&&C[i].sum==C[rank-1].sum) rank--; C[i].R[2]=rank+1; } sort(C.begin(),C.end(),cmp3); for(int i=0;i<n;i++) { int rank=i; while(rank>0&&C[i].gp==C[rank-1].gp) rank--; C[i].R[3]=rank+1; } sort(C.begin(),C.end(),cmp4); for(int i=0;i<n;i++) { int rank=i; while(rank>0&&C[i].sp==C[rank-1].sp) rank--; C[i].R[4]=rank+1; } sort(C.begin(),C.end(),cmp5); for(int k=0;k<m;k++) { int choice=1; int rank=C[k].R[1]; for(int i=1;i<=4;i++) { if(C[k].R[i]<rank) { choice=i; rank=C[k].R[i]; } } printf("%d:%d\n",rank,choice); } printf("\n"); }}
题目1007:奥运排序问题(结构体排序)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。