解题思路:
排序函数 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 人评分
【回文数(二)】 (C++代码)浏览:879 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:687 |
DNA (C语言代码)浏览:397 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:546 |
判定字符位置 (C语言代码)浏览:803 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:653 |
1231题解(注意理解“输入多个测试实例”)浏览:793 |
小O的数字 (C语言代码)浏览:1423 |
1392题解(大数相加)浏览:606 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:581 |