제출 #256830

#제출 시각아이디문제언어결과실행 시간메모리
256830islingr구경하기 (JOI13_watching)C++17
100 / 100
178 ms16536 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1 << 11; int n, P, Q, a[N], dp[N][N]; bool f(int w) { for (int i = 1; i <= n; ++i) { int j = i, k = i; while (j && a[i] - a[j] < w) --j; while (k && a[i] - a[k] < 2 * w) --k; dp[i][0] = 1 + dp[k][0]; for (int p = 1; p <= P; ++p) dp[i][p] = min(dp[j][p - 1], 1 + dp[k][p]); } return dp[n][P] <= Q; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> P >> Q; for (int i = 1; i <= n; ++i) cin >> a[i]; if (n <= P) return cout << 1, 0; sort(a + 1, a + n + 1); int l = 0, r = a[n] - a[1] + 1; while (r - l > 1) { int m = l + (r - l + 1) / 2; (f(m) ? r : l) = m; } cout << r; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...