#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define pb push_back
#define int long long
#define ll long long
#define repp(i,x,n) for(int i=x;i<=n;i++)
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repo(i,x,n) for(int i=x;i>=n;i--)
#define cy cout<<"Yes"<<endl
#define cn cout<<"No"<<endl
#define r0 return 0
#define fi first
#define se second
#define liow ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define jelek cout<<"jelek"<<endl
#define pii pair<int,int>
#define all(v) v.begin(),v.end()
#define pi pair<pair<int,int>,pair<int,int>>
#define p3 pair<int,pair<int,int>>
#define fl fflush(stdout)
#define lb long double
#define p5 pair<int,pair<pair<int,int>,pair<int,int>>>
#pragma GCC optimize ("O2")
#pragma GCC optimize ("unroll-loops")
using namespace std;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
using namespace __gnu_pbds;
template <typename T>
using ordered_set = tree<T,null_type,less<T>,rb_tree_tag, tree_order_statistics_node_update>;
const int mod=1e9+7,maxn=2e5+5,N=4e5,INF=1e18,MOD=998244353,LOG=20;
mt19937_64 rng((unsigned int) chrono::steady_clock::now().time_since_epoch().count());
void solve(){
int n,p,q;cin>>n>>p>>q;
int a[n+2];
repp(i,1,n) cin>>a[i];
sort(a+1,a+n+1);
int ans=-1;
int l=1,r=1e9;
a[n+1]=INF;
while(l<=r){
int mid=(l+r)/2;
int minp=min(2000LL,p);
int dp[n+2][minp+2];
repp(i,0,n) repp(j,0,minp) dp[i][j]=INF;
dp[0][0]=0;
int nxtp[n+2],nxtq[n+2];
int idx=1;
repp(i,1,n){
int bat=a[i]+mid-1;
while(a[idx]<=bat){
idx++;
}
nxtp[i]=idx-1;
}
idx=1;
repp(i,1,n){
int bat=a[i]+2*mid-1;
while(a[idx]<=bat){
idx++;
}
nxtq[i]=idx-1;
}
repp(i,1,n){
repp(j,0,minp){
dp[nxtp[i]][j+1]=min(dp[nxtp[i]][j+1],dp[i-1][j]);
dp[nxtq[i]][j]=min(dp[nxtq[i]][j],dp[i-1][j]+1);
}
}
int mini=INF;
repp(i,0,minp) mini=min(mini,dp[n][i]);
// cout<<mid<<" "<<mini<<endl;
if(mini<=q){
ans=mid;
r=mid-1;
} else {
l=mid+1;
}
}
cout<<ans<<endl;
}
signed main(){
liow;
int t=1;
// cin>>t;
while(t--) solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |