题解
2026-07-07 13:04:32
发布于:浙江
3阅读
0回复
0点赞
#include<bits/stdc++.h>
//用万能头更方便
using namespace std;
struct q{
int id,test;
//id代表第i个的考生号
//test代表第i个的考生成绩
//两个及以上信息要绑定在一起的
//就用struct结构体
}a[5010];
//5010防止信息过多而溢出
//从样例可以看出一定要降序,新建cmp排序
bool cmp(q a,q b){
if(a.test!=b.test) return a.test>b.test;
//先按成绩排序
return a.id<b.id;
//从样例中也可以看出:
//成绩相同时,id要升序
}
int main(){
int n,m;cin>>n>>m;
//n 表示报名选手总数
//m 表示计划录取的人数。
for(int i=1;i<=n;i++){
cin>>a[i].id>>a[i].test;
//输入
}
sort(a+1,a+n+1,cmp);
//sort排序
int cnt=0;//统计实际人数
cout<<floor(a[m*3/2].test)<<" ";
//为排名第m×150%(向下取整)名的选手的分数
//m*150% = m*3/2(不是m*1.5,会报错)
for(int i=1;i<=n;i++){
if(a[i].test>=floor(a[m*3/2].test)){cnt++;}
//判断是否第i个的分数不低于分数线
}
cout<<cnt<<endl;//输出+换行
for(int i=1;i<=cnt;i++){
cout<<a[i].id<<" "<<a[i].test<<endl;
//输出这些不低于分数线的id和分数(中间空格,结尾换行)
}
return 0;
}
点赞的是我义父
这里空空如也






有帮助,赞一个