@[yang1812](/user/1078638) 你这个算法的思路我属实没看懂,这边建议你用下结构体和sort排序,可能会好一点,然后这是我的代码,可以参考一下
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct g
{
int a,b;
}f[5010];
int cmp1(g x,g y)
{//自己写cmp函数,一步搞定两个问题
return x.b==y.b?x.a<y.a:x.b>y.b;
}
int main()
{
cin>>n>>m;
m*=1.5;
for(int i=1;i<=n;++i)
{
cin>>f[i].a>>f[i].b;
}
sort(f+1,f+n+1,cmp1);
m=f[m].b;
cout<<m<<" ";
int tot=0;
for(int i=1;i<=n;++i)
{
if(f[i].b>=m)
tot++;
else
break;
}
cout<<tot<<endl;
for(int i=1;i<=tot;++i)
{
cout<<f[i].a<<" "<<f[i].b<<endl;
}
return 0;
}
```
可能废话不少,但确实能过
by 大海中的孤帆 @ 2024-02-08 17:55:43
你把 `m *= 1.5;` 改成 `m = m * 1.5 - 1;` 说不定就能通过了,我的就是这么过的,挺奇怪的哈,明明范围已经现在为正数了,那么为什么直接丢掉小数点会出错呢?
by Winterblessed @ 2024-02-19 15:11:01
把m*=1.5改为m=1.5m-0.99
by kevin_kasalana @ 2024-03-08 22:50:45