洛谷P2678跳石头 (二分)
作者:
陈叔健爱学习
,
2022-05-29 15:43:26
,
所有人可见
,
阅读 1735
#include<iostream>
using namespace std;
const int N=50010;
int L,n,m;
int d[N];
bool check(int mid) {
int cnt=0,last=0;
for(int i=1;i<=n;i++) {
if(d[i] - last < mid) cnt++;
else last=d[i];
}
return cnt<=m;
}
int main()
{
scanf("%d%d%d",&L,&n,&m);
for(int i=1;i<=n;i++) {
scanf("%d",&d[i]);
}
n++;
d[n] = L;
int l = 1 ,r = 1000000000;
while (l < r) {
int mid = (l + r + 1) /2;
if (check(mid))
l = mid;
else r = mid - 1;
}
printf("%d\n",r);
return 0;
}
呜呜,感觉一变复杂大佬感觉理解不了
厉害厉害