1.把第12和13行改成“return a.num<b.num;”
2.输入m之后再给plan赋值```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m;
int cnt;
struct node{
int num,pts;
}a[5005];
int line;
bool cmp(node a,node b){
if(a.pts!=b.pts)return a.pts>b.pts;
return a.num<b.num;
}
int main(){
cin>>n>>m;
int plan=floor(m*1.5);
for(int i=1;i<=n;i++){
cin>>a[i].num>>a[i].pts;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(i==plan)line=a[i].pts;
}
for(int i=1;i<=n;i++){
if(a[i].pts>=line)cnt++;
}
cout<<line<<" "<<cnt<<endl;
for(int i=1;i<=cnt;i++){
cout<<a[i].num<<" "<<a[i].pts<<endl;
}
return 0;
}
```
by Handezheng @ 2024-01-26 14:38:32
后面代码你可以忽略
by Handezheng @ 2024-01-26 14:39:21
原因:
1.如果第11行之后没有返回就说明 _a.pts_ 与 _b.pts_ 相等,此时我们从小到大比较num即可
2.定义m后,m为0,此时为plan赋值,plan也会等于0,需要先输入m的值
by Handezheng @ 2024-01-26 14:44:05