一半AC一半WA,WA的点是输出了0,应该不是0
#include<bits/stdc++.h>
#define int long long
using namespace std;
int ans=0x3f3f3f3f;
int n,m;
int a[1000010];
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
if(m>=n-1)
{
cout<<0;
return 0;
}
sort(a+1,a+1+n);
for(int i=0;i<=m;i++)//枚举最小变最大的次数,m-i就是最大变最小的次数
{
//先把最小变最大,此时最小值确定了,看最大值是多少就行。
int minn1=a[1+i];
int maxn1=a[n-max(0ll,1ll*m-i-i)];
if(minn1<=maxn1)
ans=min(ans,maxn1-minn1);
//先把最大变最小,此时最大值确定了,看最小值是多少就行。
int maxn2=a[n-(m-i)];
int minn2=a[1+max(0ll,1ll*i+i-m)];
if(minn2<=maxn2)
ans=min(ans,maxn2-minn2);
}
cout<<ans;
return 0;
}