#include <iostream>
#include <cstring>
using namespace std;
int main(){
int n,m,t;
while(cin>>n>>m){
int coun[10][3]; //分别记录各个国家的金牌、奖牌、人口数
for(int i=0;i<n;i++){
cin>>coun[i][0]>>coun[i][1]>>coun[i][2];
}
float data[10][4]; //分别记录需要排序国家的金牌、奖牌、金牌比、奖牌比
int rank[10][4]; //分别是各个项目的排名
memset(rank,0,sizeof rank);
for(int i=0;i<m;i++){
cin>>t;
data[i][0]=coun[t][0];
data[i][1]=coun[t][1];
data[i][2]=coun[i][0]?data[i][0]/coun[t][2]:0; //金牌数可能为0
data[i][3]=coun[i][1]?data[i][1]/coun[t][2]:0; //奖牌数可能为0
}
for(int i=0;i<m;i++){ //外面两层循环是两个国家遍历进行对比
for(int j=0;j<m;j++){
for(int k=0;k<4;k++){ //国家之间要对比4项数据
if(data[i][k]<data[j][k]) //如果i国家的数据落后j国家,则i国家的k项目的排名下降
rank[i][k]++;
}
}
}
for(int i=0;i<m;i++){ //对每个需要排序的国家遍历
int min=0;
for(int j=0;j<4;j++){ //在4个项目中挑选最好的成绩
if(rank[i][j]<rank[i][min])
min=j;
}
cout<<rank[i][min]+1<<":"<<min+1<<endl;
}
cout<<endl;
}
return 0;
}
KY117 奥运排序问题
最新推荐文章于 2024-02-04 21:01:59 发布