改了下,过了 #include<stdio.h> struct stu{ int num; int mark; }; int main(void) { int n,m,i,j,min,max,t; struct stu c[5005]; scanf("%d%d",&n,&m); m=m+m/2; for(i=1;i<=n;i++) scanf("%d%d",&c[i].num,&c[i].mark); for(i=1;i<=n-1;i++) { max=i; for(j=i+1;j<=n;j++) max=(c[max].mark>=c[j].mark)?max:j; if(max!=i) c[5005]=c[i],c[i]=c[max],c[max]=c[5005]; } t=c[m].mark; for(i=1;c[i].mark>=t;i++) { min=i; for(j=i+1;c[j].mark==c[i].mark;j++) min=(c[min].num<=c[j].num)?min:j; if(min!=i) c[5000]=c[i],c[i]=c[min],c[min]=c[5000]; } printf("%d %d\n",t,i-1); t=i; for(i=1;i<t;i++) printf("%d %d\n",c[i].num,c[i].mark); return 0; }