#include #include using namespace std; const int INF = 1<<20; int N, L, K; vector F, C, S; bool ok(int X){ C.assign(N+1, INF); int sum=0; int right=0; for (int left=0; left<=N; left++) { while (right<=N && sum+F[right]=0;i--) S[i]=min(S[i+1], C[i]); bool res = false; for (int i=0;i<=N;i++){ if (i+C[i]+1>N) break; if (C[i]+S[i+C[i]+1]<=N-K) { res = true; break; } } return res; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>L>>K; vector A(N+1); for (int i=0;i>A[i]; A[N]=L; F.assign(N+1, 0); F[0]=A[0]; for (int i=1;i<=N;i++) F[i]=A[i]-A[i-1]; int l = -1, r=L; while(l+1