代码
#include<bits/stdc++.h>
using namespace std;
struct text
{
string k; //成绩并列时输出的序号以字典序排序 string类型之间可以直接比较
int s;
}text[5005];
int main()
{
int n,m,sum=0,a,p;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>text[i].k>>text[i].s;
}
p=floor(m*1.5); //录取人数线
for(int i=1;i<=n;i++)
{
for(int j=1+i;j<=n;j++)
{
if(text[i].s<text[j].s) //如果text[j]比text[i]成绩高 将j对应的成绩和序号移动(swap)到i对应的成绩和序号前
{
swap(text[i].s,text[j].s);
swap(text[i].k,text[j].k);
}
else if(text[i].s==text[j].s && text[i].k>text[j].k)//成绩相同的话按序号的字典序排序
{
swap(text[i].s,text[j].s);
swap(text[i].k,text[j].k);
}
}
}
a=text[p].s; //录取人数对应的录取分数
for(int i=1;i<=n;i++)
{
if(text[i].s>=a) //如果达到了录取分数
sum++;
}
cout<<a<<" "<<sum<<endl;
for(int i=1;i<=sum;i++)
{
cout<<text[i].k<<" "<<text[i].s<<endl;
}
return 0;
}