#include<iostream>
#include<math.h>
using namespace std;
struct candinate{
int id;
int grade;
};
void ShellSort(candinate *arr,int n)
{
int gap=n;
while(gap!=1)
{
gap/=2;
for(int i=0; i<n-gap ;i++)
{
int temp=arr[i+gap].grade;
int t=arr[i+gap].id;
int end = i;
while(end>=0)
{
if( arr[end].grade ==temp)
{
if( arr[end].id > t)
{
arr[end+gap].grade = arr[end].grade;
arr[end + gap].id = arr[end].id;
end-=gap;
}
}
else if( arr[end].grade < temp)
{
arr[end + gap].grade = arr[end].grade;
arr[end + gap].id = arr[end].id;
end-=gap;
}
else
break;
}
arr[end+gap].grade=temp;
arr[end+gap].id = t;
}
}
}
int main()
{
int n,m;
cin>>n>>m;
candinate *a=new candinate[n+1];
int i=0;
for(i=0; i<n ; i++)
{
cin>>a[i].id>>a[i].grade;
}
ShellSort(a,n);
int t=floor(m*1.5);
int b=a[t-1].grade;
for(i=t; i<n;i++)
{
if(a[i].grade==b)
t++;
else
break;
}
cout<<b<<' '<<t<<endl;
for(i=0; i<t; i++)
{
cout<<a[i].id<<' '<<a[i].grade<<endl;
}
delete []a;
return 0;
}
这段代码有什么问题,不知道错在哪里了,各位大佬帮帮忙