本来想按板子写,但是check逻辑不一样
更新的就不一样,自己写结果就tle了
是搜的范围太大了吗
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,c;
int a[maxn]={0};
int d[maxn];
bool check(int mid)
{
int cnt=0;
for(int i=1;i<=n;i++)
if(d[i]<mid)cnt++;
if(cnt>=c)
return false;
return true;
}
int bs(int l,int r)
{
while(l<r)
{
int mid=(l+r+1)>>1;
if(check)
r=mid;
else
l=mid+1;
}
return l;
}
int main()
{
cin>>n>>c;
for(int i=1;i<=n;i++)
{
cin>>a[i];
d[i]=a[i]-a[i-1];
}
cout<<bs(1,maxn/2);
return 0;
}