解题思路:
排序函数 cmpP
注意事项:
见注释
参考代码:
#include<bits/stdc++.h> #define RATE 1.5 // 通过比率,1.5 using namespace std; class P { public: int id; // 报名号 int score; // 分数 P() { } ~P() { } }; // 分数高的排前面,分数一致时,报名号小的排前面 bool cmpP(P a, P b) { if (a.score == b.score) { return a.id < b.id; } else { return a.score > b.score; } } int main() { int n, m; while (cin >> n >> m) { int borderline; // 分数线 int passCount = 0; // >= 分数线的人数 P * Person = new P[n]; // 动态分配内存 // 输入 for (int i = 0; i < n; ++i) { cin >> Person[i].id >> Person[i].score; } // 排序 sort(Person, Person + n, cmpP); // 分数线,强制类型转换到int即下取整 // -1是因为:排名第1的人,在Person数组中下标为0(以此类推) borderline = Person[(int)(m * RATE) - 1].score; // 统计通过人数 for (int i = 0; i < n; ++i) { if (Person[i].score >= borderline) passCount++; else break; } // 输出 cout << borderline << " " << passCount << endl; for (int i = 0; i < passCount; ++i) { cout << Person[i].id << " " << Person[i].score << endl; } // 收回内存 delete[] Person; } return 0; }
0.0分
17 人评分
点我有惊喜!你懂得!浏览:1220 |
C二级辅导-计负均正 (C语言代码)浏览:577 |
简单的a+b (C语言代码)浏览:703 |
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:928 |
printf基础练习2 (C语言代码)浏览:941 |
字符串比较 (C语言代码)答案错误????浏览:596 |
P1001 (C语言代码)浏览:799 |
妹子杀手的故事 (C语言代码)浏览:1218 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:575 |
母牛的故事 (C语言代码)浏览:715 |