#pragma region Yoyoyo #ifdef LOCAL #define _GLIBCXX_DEBUG #endif #include using namespace std; using ll=long long; using ld=long double; using i128t=__int128_t; using pii=pair; using pll=pair; const string Yes="Yes"; const string No="No"; const long long inf=1ll<<60; #ifndef LOCAL #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #endif #define fi first #define se second #define pb push_back #define eb emplace_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define faster ios::sync_with_stdio(false);cin.tie(nullptr); #define print(s) cout< inline bool chmax(T &a,T b){return ((a inline bool chmin(T &a,T b){return ((a>b)?(a=b,true):(false));} template ll sum(const T&a){return accumulate(all(a),0LL);} template ostream &operator<<(ostream &os,const pair&p){ os< istream &operator>>(istream &is,pair&p){ is>>p.first>>p.second; return is; } template ostream &operator<<(ostream &os,const vector&v){ int s=v.size(); for(int i=0;i istream &operator>>(istream &is,vector&v){ for(auto &x:v){ is>>x; } return is; } template ostream &operator<<(ostream &os,const vector>&v){ int s=v.size(); for(int i=0;i ostream &operator<<(ostream &os,const vector>>&v){ int s=v.size(); for(int i=0;i>N>>L>>K; ll sm=N-K+2; //2ピースの合計は、sm、N+1ピースあって、(K+1-2)個は長さ1 ll ok=0,ng=L/2+1; vectorA(N+2); for(int i=1;i<=N;i++)cin>>A[i]; A[0]=0;A[N+1]=L; auto check = [&](ll md)->bool { ll now=inf; for(ll i=0;i=md){ ll dis=upper_bound(all(A),A[i]-md)-A.begin(); dis--; chmin(now,i-dis); } if(A[i]+md<=L){ ll dis=lower_bound(all(A),A[i]+md)-A.begin(); if((dis-i)+now<=sm){ return true; } } } return false; }; while(ng-ok>1){ ll md=(ng+ok)/2; if(check(md)) ok=md; else ng=md; } cout<