Submission #1274955

#TimeUsernameProblemLanguageResultExecution timeMemory
1274955tsengangWatching (JOI13_watching)C++20
100 / 100
916 ms7944 KiB
#include <bits/stdc++.h> #define ll long long #define ff first #define ss second #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define pb push_back #define ertunt return #define vodka void using namespace std; int main() { ll n, p, q; cin >> n >> p >> q; if (p + q >= n) { cout << 1; ertunt 0; } ll a[n]; for (ll i = 0; i < n; i++) cin >> a[i]; sort(a, a+n); ll dp[p+1][q+1]; ll l = 1, r = 1e9+5; while (l < r) { ll m = (l+r)/2; memset(dp,0,sizeof dp); for(ll i = 0; i <= p; i++){ for(ll j = 0; j <= q; j++){ if(i>0){ if(dp[i-1][j]==n) dp[i][j]=n; else{ ll R = lower_bound(a, a+n, a[dp[i-1][j]]+m)-a; dp[i][j] = max(dp[i][j], R); } } if(j>0){ if(dp[i][j-1]==n) dp[i][j]=n; else{ ll R = lower_bound(a, a+n, a[dp[i][j-1]]+2*m)-a; dp[i][j] = max(dp[i][j], R); } } } } if(dp[p][q]==n) r=m; else l=m+1; } cout << l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...