看出来了
by I_am_AKed_by_NOI @ 2023-09-12 23:07:18
@[zhangmingsheng3521](/user/765461) 因为你是从小到大排序的,所以第 $m\times 1.5$ 名应该是 $n- m\times 1.5+1$ 名。
by I_am_AKed_by_NOI @ 2023-09-12 23:08:43
还有,输出是从大到小,所以要倒序循环。
by I_am_AKed_by_NOI @ 2023-09-12 23:10:15
```cpp
#include"bits/stdc++.h"
using namespace std;
struct k
{
int score;
int num;
}
a[5003];
int main()
{
int n,m,x,ans=0;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i].num);
scanf("%d",&a[i].score);
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<n;j++)
{
if (a[i].score<a[j].score)
{
x=a[i].score;
a[i].score=a[j].score;
a[j].score=x;
x=a[i].num;
a[i].num=a[j].num;
a[j].num=x;
}
if (a[i].score==a[j].score&&a[i].num>a[j].num)
{
x=a[i].num;
a[i].num=a[j].num;
a[j].num=x;
}
}
}
int tmp=m*1.5;
x=a[n-tmp+1].score; //刚才有说
printf("%d",x);
printf(" ");
for (int i=1;i<=n;i++)
{
if (a[i].score>=x)
{
ans++;
}
}
printf("%d\n",ans);
for(int i=n;i>=1;i--) // 这里要改成倒序循环
{
if (a[i].score>=x)
{
printf("%d ",a[i].num);
printf("%d\n",a[i].score);
}
//return 0; 这里不用加 return 0 的,毕竟要全部输出完才结束
}
}
```
代码修改如下,已经 AC。
by I_am_AKed_by_NOI @ 2023-09-12 23:12:23
有一份输出要从大到小的,需修改循环
for(int i=n;i>=1;i--)
by Sreffial @ 2023-09-12 23:25:33
@[I_am_AKed_by_NOI](/user/807853) 谢谢!1关注已给,第二个等会上电脑拿小号补上
by zhangmingsheng3521 @ 2023-09-13 21:00:04