各位帮看看只有第8个点错了,正确答案是4100,代码结果是4099,想不出哪里有问题,整体思路是假设移走i个路灯可以实现最大连续k个,尝试每波移走j到j+i-1个,那么最大区间就是a[j+i]-a[j-1];
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
int n,k,b;
int minn,roadlen,flag=0;
cin>>n>>k>>b;
for(int i=1;i<=b;i++)
cin>>a[i];
sort(a+1,a+b+1);
a[b+1]=n;
for(int i=1;i<=n;i++){
for(int j=1;j<=b-i+1;j++)
{
roadlen=a[j+i]-a[j-1];
if(roadlen>=k){
flag=1,minn=i;
break;
}
}
if(flag==1)break;
}
cout<<minn;
return 0;
}