// // Created by xxx on 2023/1/16. // #include "iostream" using namespace std; class country_117 { public: int gold; // 金牌数 int medal; // 奖牌数 int people; // 人口数 // 含参数构造函数: country_117(int iGold, int iMedal, int iPeople) : gold(iGold), medal(iMedal), people(iPeople) {} // 默认构造函数: country_117() { cin >> gold >> medal >> people; } }; int main() { int N, M; // 国家数(0~N-1),要求排名的国家数 while (cin >> N >> M) { // 输入:输入N与M country_117 countries[N]; // 输入:触发默认构造函数,对N个国家的数据进行输入 int sortCounty[M]; for (int i = 0; i < M; ++i) cin >> sortCounty[i]; // 输入:需要排序的国家序号 // 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 => 排名:排名方式 for (int k = 0; k < M; ++k) { // 对于每个需要排序的国家: int i = sortCounty[k]; int rank = 1, rankTemp, method = 1; // 排名,临时变量,排序方法 // 方式1:金牌总数 for (int j = 0; j < N; ++j) if (countries[j].gold > countries[i].gold) rank++; // 方式2:奖牌总数 rankTemp = 1; for (int j = 0; j < N; ++j) if (countries[j].medal > countries[i].medal) rankTemp++; if (rank > rankTemp) { rank = rankTemp; method = 2; } // 方式3:金牌人口比例 rankTemp = 1; for (int j = 0; j < N; ++j) if ((1.0 * countries[j].gold / countries[j].people) > 1.0 * countries[i].gold / countries[i].people) rankTemp++; if (rank > rankTemp) { rank = rankTemp; method = 3; } // 方式4:奖牌人口比例 rankTemp = 1; for (int j = 0; j < N; ++j) if ((1.0 * countries[j].medal / countries[j].people) > 1.0 * countries[i].medal / countries[i].people) rankTemp++; if (rank > rankTemp) { rank = rankTemp; method = 4; } // 人口 =0 的情况: if (countries[i].people == 0 && countries[i].gold != 0 && rank!=1) method = 3; if (countries[i].people == 0 && countries[i].medal != 0 && countries[i].gold == 0) method = 4; cout << rank << ":" << method << endl; } cout << endl; } return 0; }