rt
想着二分答案,check 函数中每相邻两个如果大于 mid 就计算要多少个。
结果 WA #1 和 #10
Code:
#include <bits/stdc++.h>
using namespace std;
int l,n,k;
int sign[100005];
bool check(int x)
{
int count=0;
for(int i=1;i<n;i++)
{
if(sign[i]-sign[i-1]>x)
{
count+=(sign[i]-sign[i-1])/x;
}
}
return count<=k;
}
int main()
{
cin>>l>>n>>k;
for(int i=0;i<n;i++)
{
int a;
cin>>a;
sign[i]=a;
}
int L=0,R=1000000;
int ans;
while(L<=R)
{
int mid=(L+R)/2;
if(check(mid))
{
R=mid-1;
ans=mid;
}
else
{
L=mid+1;
}
}
cout<<ans;
return 0;
}
求助大佬。。。