一道纯暴力枚举题
避坑指南:可能删头,可能删尾,也可能删头和尾,要考虑全面。
解题思路:计算从i开始第k个点开始k-i>d,k和k后面的点以及i之前的点都是需要删除的,寻找需要删除数量最少的点数
#include<bits/stdc++.h>
using namespace std;
int n,d,a[111],cnt,ans=-1;
int main()
{
cin>>n>>d;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++){
cnt=1;
for(int j=i+1;j<n;j++){
if(a[j]-a[i]<=d) cnt++;
else break;
}
ans=max(ans,cnt);
}
cout<<n-ans<<endl;
return 0;
}