1007.奥运排序问题
Posted bernieloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1007.奥运排序问题相关的知识,希望对你有一定的参考价值。
题目描述:
-
按要求,给国家进行排名。
- 输入:
-
有多组数据。 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。 接下来一行给出M个国家号。
- 输出:
-
排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名 格式为: 排名:排名方式 如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例 如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4. 每组数据后加一个空行。
- 样例输入:
-
4 4 4 8 1 6 6 2 4 8 2 2 12 4 0 1 2 3 4 2 8 10 1 8 11 2 8 12 3 8 13 4 0 3
- 样例输出:
-
1:3 1:1 2:1 1:2
#include<iostream> using namespace std; struct paixu{ int i; int j; }paixu[5]; struct guojia{ int gold; int medal; int people; double goldper; double medalper; }guo[1000]; int paixu1(int x,int n){ int num=1; for(int i=0;i<n;i++){ if(guo[i].gold>guo[x].gold) num++; } return num; } int paixu2(int x,int n){ int num=1; for(int i=0;i<n;i++){ if(guo[i].medal>guo[x].medal) num++; } return num; } int paixu3(int x,int n){ int num=1; for(int i=0;i<n;i++){ if(guo[i].goldper>guo[x].goldper) num++; } return num; } int paixu4(int x,int n){ int num=1; for(int i=0;i<n;i++){ if(guo[i].medalper>guo[x].medalper) num++; } return num; } void mim(){ if(paixu[1].j<=paixu[2].j) { if(paixu[1].j<=paixu[3].j){ if(paixu[1].j<=paixu[4].j){ paixu[0]=paixu[1]; return; } else { paixu[0]=paixu[4]; return; } } else if(paixu[3].j<=paixu[4].j){ paixu[0]=paixu[3]; return; } else { paixu[0]=paixu[4]; return; } } else if(paixu[2].j<=paixu[3].j){ if(paixu[2].j<=paixu[4].j){ paixu[0]=paixu[2]; return; } else { paixu[0]=paixu[4]; return; } } else if(paixu[3].j<=paixu[4].j){ paixu[0]=paixu[3]; return; } else { paixu[0]=paixu[4]; return; } } int main(){ int n,m,i,a; while(cin>>n>>m){ for(i=0;i<n;i++){ cin>>guo[i].gold>>guo[i].medal>>guo[i].people; guo[i].goldper=guo[i].gold/guo[i].people; guo[i].medalper=guo[i].medal/guo[i].people; } for(i=0;i<m;i++){ cin>>a; paixu[1].i=1; paixu[1].j=paixu1(a,n); paixu[2].i=2; paixu[2].j=paixu2(a,n); paixu[3].i=3; paixu[3].j=paixu3(a,n); paixu[4].i=4; paixu[4].j=paixu4(a,n); mim(); cout<<paixu[0].j<<":"<<paixu[0].i<<endl; } cout<<endl; } return 0; }
以上是关于1007.奥运排序问题的主要内容,如果未能解决你的问题,请参考以下文章