此题之水,水于上青天
$(1<=n<=100,0<=d<=1001<=n<=100,0<=d<=100 )$
$n$ 只有100!
思路:
先sort排序,再双重循环枚举,求出范围 $i$ ~ $j$ ,其余剩下的(不在这个范围内的),比如 $a[i-1]$ ,就是删去的。然后打擂台:
m=min(m,n-j+i-1);//算出i~j里面有多少个数字
最后输出m即可。
AC CODE:
#include<iostream>
#include<algorithm>//sort头文件
using namespace std;
int n,m=100000000;//m一定要开大一点!
int d;
int a[30000];
int main(){
cin>>n>>d;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);//排序
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){//可能存在i=j(最大值和最小值相同的情况)
if(a[j]-a[i]<=d){
m=min(m,n-j+i-1);//打擂台
}
}
}
cout<<m;
return 0;//华丽的结束
}
码风新奇勿喷