#include<bits/stdc++.h> using namespace std; struct viewer { int no; //考号。 int scr; //分数。 }vr[5000]; bool cmp(viewer a,viewer b) //排序。 { if(a.scr==b.scr)return a.no<b.no;//分数相等时小的编号在前。 else return a.scr>b.scr; //分数高的在前。 } int main() { int n=0,m=0,sd=0,count=0; //人数,录取系数,录取人数线,实际录取人数。 scanf("%d%d",&n,&m); sd=floor(m*1.5); //得出录取人数后向下取整得到所求人数线。 if(sd>n)sd=n; for(int i=0;i<n;i++) { scanf("%d%d",&vr[i].no,&vr[i].scr); } stable_sort(vr,vr+n,cmp); //稳定排序。 for(int i=0;i<n;i++) { if(vr[i].scr>=vr[sd-1].scr)count++; //如果得分在分数线之上就记录为实际录取人数。 else break; } printf("%d %d\n",vr[sd-1].scr,count); //输出所求样式。 for(int i=0;i<count;i++) { printf("%d %d\n",vr[i].no,vr[i].scr); } return 0; }