Submission #444359

#TimeUsernameProblemLanguageResultExecution timeMemory
444359fuad27Watching (JOI13_watching)C++14
0 / 100
16 ms31948 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int n, p, q; vector<int> A; vector<vector<int>> dp(2010, vector<int> (2010, 0)); bool can(int w) { int a = 0, b = 0; dp[0][0] = 0; int I = min(n, p); int J = min(n, q); for(int i = 0;i<=I;i++) { for(int j = 0;j<=J;j++) { if(i == 0 and j == 0) continue; if(i > 0) { a=dp[i-1][j]; b = a; while(a<n and A[b]+2*w-1>=A[a]) a++; } dp[i][j]=a; if(j > 0) { a=dp[i][j-1]; b = a; while(a<n and A[b]+2*w-1>=A[a]) a++; } dp[i][j]=max(a, dp[i][j]); } } return (dp[I][J]>=n); } int32_t main () { cin >> n >> p >> q; for(int i = 0;i<n;i++) { int ai; cin >> ai; A.push_back(ai); } sort(A.begin(), A.end()); int r = 1e9, l = 1, ans = 0; while(l<=r) { int mid = (l+r)/2; if(can(mid)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...