/*思想不难,排名不用排序,有国家指标比你高,你的排名就++
很坑的是对于输入人口为0的处理:奖牌为0,比率也为0;奖牌不为0,比率无穷大
*/
#include<iostream>
#include<limits>
using namespace std;
struct country{
double gold,sum,population;//金牌、总数、人口
double goldratio ,sumratio;//金牌率、奖牌率
};
country s[100];
int main(){
int n,m;
while(cin>>n>>m){
for(int i=0;i<n;i++){//输入数据,计算金牌率和奖牌率
cin>>s[i].gold>>s[i].sum>>s[i].population;
if(s[i].gold==0&&s[i].population==0)s[i].goldratio=0;//均为0,比率为0
if(s[i].sum==0&&s[i].population==0)s[i].sumratio=0;
if(s[i].gold!=0&&s[i].population==0)s[i].goldratio=numeric_limits<double>::max();//只有人口为0,比率无穷大
if(s[i].sum!=0&&s[i].population==0)s[i].sumratio=numeric_limits<double>::max();
if(s[i].population!=0){
s[i].goldratio=s[i].gold/s[i].population;
s[i].sumratio=s[i].sum/s[i].population;
}
}
for(int j=1;j<=m;j++){//输入查询国家,计算排名
int find,rank[4]={1,1,1,1};//初始排名默认为1
cin>>find;
for(int i=0;i<n;i++){//凡是有某国家指标比其高的,对应排名++
if(s[i].gold>s[find].gold)rank[0]++;
if(s[i].sum>s[find].sum)rank[1]++;
if(s[i].goldratio>s[find].goldratio)rank[2]++;
if(s[i].sumratio>s[find].sumratio)rank[3]++;
}
int bestrank=n+1,rankmethod;//最佳排名、排名方式
for(int i=0;i<4;i++){//找到最小的排名并记录排名方式
if(rank[i]<bestrank){
bestrank=rank[i];
rankmethod=i+1;//注意排名方式是1~4,需偏移+1
}
}
cout<<bestrank<<":"<<rankmethod<<endl;
}
cout<<endl;
}
}
#include<limits>
using namespace std;
struct country{
double gold,sum,population;//金牌、总数、人口
double goldratio ,sumratio;//金牌率、奖牌率
};
country s[100];
int main(){
int n,m;
while(cin>>n>>m){
for(int i=0;i<n;i++){//输入数据,计算金牌率和奖牌率
cin>>s[i].gold>>s[i].sum>>s[i].population;
if(s[i].gold==0&&s[i].population==0)s[i].goldratio=0;//均为0,比率为0
if(s[i].sum==0&&s[i].population==0)s[i].sumratio=0;
if(s[i].gold!=0&&s[i].population==0)s[i].goldratio=numeric_limits<double>::max();//只有人口为0,比率无穷大
if(s[i].sum!=0&&s[i].population==0)s[i].sumratio=numeric_limits<double>::max();
if(s[i].population!=0){
s[i].goldratio=s[i].gold/s[i].population;
s[i].sumratio=s[i].sum/s[i].population;
}
}
for(int j=1;j<=m;j++){//输入查询国家,计算排名
int find,rank[4]={1,1,1,1};//初始排名默认为1
cin>>find;
for(int i=0;i<n;i++){//凡是有某国家指标比其高的,对应排名++
if(s[i].gold>s[find].gold)rank[0]++;
if(s[i].sum>s[find].sum)rank[1]++;
if(s[i].goldratio>s[find].goldratio)rank[2]++;
if(s[i].sumratio>s[find].sumratio)rank[3]++;
}
int bestrank=n+1,rankmethod;//最佳排名、排名方式
for(int i=0;i<4;i++){//找到最小的排名并记录排名方式
if(rank[i]<bestrank){
bestrank=rank[i];
rankmethod=i+1;//注意排名方式是1~4,需偏移+1
}
}
cout<<bestrank<<":"<<rankmethod<<endl;
}
cout<<endl;
}
}