这样:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct fan{
int k,s;
};
bool cnt(const fan &a,const fan &b){
return a.k>b.k;
}
int main()
{
int n,m,sum;
fan a[5010];
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].k>>a[i].s;
}
sort(a,a+n,cnt);
sum=(int)m*1.5;
for(int i=1;i<=sum;i++){
cout<<a[i].k<<' '<<a[i].s<<endl;
}
return 0;
}
```
by maokaiyu @ 2024-03-17 10:58:35
@[lucy2012](/user/1252442) 首先对于结构体你要按照你自己需要的排序来写比较函数,或者重构小于运算符。sort跟的是头与尾的指针,不是值。
by maokaiyu @ 2024-03-17 11:00:03
@[lucy2012](/user/1252442) 我的排序方式并没有按照题意,你自己改吧。
by maokaiyu @ 2024-03-17 11:01:38
@[lucy2012](/user/1252442) 在吗
by maokaiyu @ 2024-03-17 11:07:04
@[maokaiyu](/user/1293596) 谢谢!刚刚没看到
by lucy2012 @ 2024-03-17 11:24:22
@[maokaiyu](/user/1293596) 这样是不是只换了一部分?可不可以再调下QAQ
```cpp
#include<bits/stdc++.h>
using namespace std;
struct fan{
int k,s;
};
bool cnt(const fan &a,const fan &b){
return a.s>b.s;
}
int main()
{
int n,m,sum,sum1;
fan a[5010];
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i].k>>a[i].s;
sort(a,a+n,cnt);
sum=(int)m*1.5;
sum1=a[sum].s;
for(int i=1;i<=sum;i++){
if(a[i].s<sum1)
break;
cout<<a[i].k<<' '<<a[i].s<<endl;
}
return 0;
}
```
by lucy2012 @ 2024-03-17 11:33:43
@[lucy2012](/user/1252442) 你没考虑 $s$ 一样的情况
by maokaiyu @ 2024-03-17 11:35:06
@[maokaiyu](/user/1293596) 应该还有其他的问题吧,s一样会影响排序吗?(不知道怎么改
by lucy2012 @ 2024-03-17 12:12:13
@[lucy2012](/user/1252442) 以及 $m$ 不应该乘 $1.5$ 应该是排完序的$a[m].s * 1.5$。
by maokaiyu @ 2024-03-17 12:16:51
@[maokaiyu](/user/1293596)
```cpp
#include<bits/stdc++.h>
using namespace std;
struct fan{
int k,s;
};
bool cnt(const fan &a,const fan &b){
return a.s>b.s;
}
int main()
{
int n,m,sum;
fan a[5010];
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].k>>a[i].s;
}
sort(a,a+n,cnt);
sum=(int)a[m].s*1.5;
for(int i=1;i<=sum;i++){
cout<<a[i].k<<' '<<a[i].s<<endl;
}
return 0;
}
```
这样吗
by lucy2012 @ 2024-03-20 19:00:54