제출 #531773

#제출 시각아이디문제언어결과실행 시간메모리
531773pokmui9909Watching (JOI13_watching)C++17
100 / 100
237 ms31820 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll N, P, Q; ll A[2005]; ll B[2005][2]; ll D[2005][2005]; ll f(ll W){ for(int i = 1; i <= N; i++){ B[i][0] = upper_bound(A, A + i, A[i] - W) - A - 1; B[i][1] = upper_bound(A, A + i, A[i] - 2 * W) - A - 1; } for(int i = 1; i <= N; i++){ for(int j = 0; j <= N; j++){ D[i][j] = D[B[i][1]][j] + 1; if(j >= 1) D[i][j] = min(D[i][j], D[B[i][0]][j - 1]); } } return D[N][min(P, N)]; } int main(){ cin.tie(0) -> sync_with_stdio(false); cin >> N >> P >> Q; A[0] = -1e15; for(int i = 1; i <= N; i++){ cin >> A[i]; } sort(A + 1, A + N + 1); ll L = 1, R = 1e9; while(L <= R){ ll m = (L + R) / 2; if(f(m) <= Q) R = m - 1; else L = m + 1; } cout << L; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...