很水的一道排序题,打好cmp即可
注意向下取整用floor
上代码:
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define N 5001
using namespace std;
struct student
{
int k;
int s;
}node[N];
bool cmp(const student &a,const student &b)
{
if(a.s>b.s)
return true;
else
if(a.s==b.s)
{
if(a.k<b.k)
return true;
}
return false;
}
int main()
{
int n,m,tot=0;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d %d",&node[i].k,&node[i].s);
sort(node+1,node+n+1,cmp);
int temp=floor(m*1.5);
int grade=node[temp].s;
for(int i=1;i<=n;i++)
if(node[i].s>=grade)
tot++;
printf("%d %d\n",grade,tot);
for(int i=1;i<=n;i++)
if(node[i].s>=grade)
printf("%d %d\n",node[i].k,node[i].s);
return 0;
}