Submission #1264719

#TimeUsernameProblemLanguageResultExecution timeMemory
1264719SDAdzs1tgWatching (JOI13_watching)C++20
0 / 100
44 ms4168 KiB
#include<bits/stdc++.h> #define int long long using namespace std; const int maxn = 2001; int n, p, q, a[maxn], dp[maxn][maxn]; bool check(int mid) { dp[0][0] = 0; for(int i = 0; i <= p; i++) { for(int j = 0; j <= q; j++) { dp[i][j] = 0; if(i > 0) { int last = dp[i - 1][j]; int t = upper_bound(a + 1, a + n + 1, a[min(n, last + 1)] + mid - 1) - a - 1; dp[i][j] = max(dp[i][j], t); } if(j > 0) { int last = dp[i][j - 1]; int t = upper_bound(a + 1, a + n + 1, a[min(n, last + 1)] + 2 * mid - 1) - a - 1; dp[i][j] = max(dp[i][j], t); } if(dp[i][j] >= n) { return true; } } } return false; } signed main () { cin >> n >> q >> p; for(int i = 1; i <= n; i++) cin >> a[i]; sort(a + 1, a + n + 1); if(q + p >= n) { cout << 1; return 0; } int l = 1, r = 1e9; while(l <= r) { int mid = (l + r) / 2; if(check(mid)) { r = mid - 1; } else l = mid + 1; } cout << l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...