Submission #954193

#TimeUsernameProblemLanguageResultExecution timeMemory
954193irmuunWatching (JOI13_watching)C++17
50 / 100
145 ms262144 KiB
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll n,p,q;
    cin>>n>>p>>q;
    ll a[n+5];
    for(ll i=1;i<=n;i++){
        cin>>a[i];
    }
    if(p+q>=n){
        cout<<1;
        return 0;
    }
    sort(a+1,a+n+1);
    ll l=1,r=1e9;
    bool dp[n+5][n+5][n+5];
    while(l<r){
        ll w=(l+r)/2;
        memset(dp,0,sizeof dp);
        for(ll i=n;i>=1;i--){
            for(ll j=p;j>=0;j--){
                for(ll k=q;k>=0;k--){
                    if(j==0&&k==0){
                        continue;
                    }
                    if(k>0){
                        ll R=i;
                        while(R<n&&a[R+1]<a[i]+2*w){
                            R++;
                        }
                        if(R==n){
                            dp[i][j][k]=true;
                            continue;
                        }
                        dp[i][j][k]|=dp[R+1][j][k-1];
                    }
                    if(j>0){
                        ll R=i;
                        while(R<n&&a[R+1]<a[i]+w){
                            R++;
                        }
                        if(R==n){
                            dp[i][j][k]=true;
                            continue;
                        }
                        dp[i][j][k]|=dp[R+1][j-1][k];
                    }
                }
            }
        }
        if(dp[1][p][q]){
            r=w;
        }
        else{
            l=w+1;
        }
    }
    cout<<l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...