제출 #1319901

#제출 시각아이디문제언어결과실행 시간메모리
1319901aaaaaaaa구경하기 (JOI13_watching)C++20
0 / 100
1095 ms332 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int mxN = 105; const int inf = 2e18 + 4; int a[mxN], dp[mxN][100004], n, s, b, cur; int f(int i, int s){ if(s < 0) return inf; if(i == n) return 0; //if(dp[i][s] != -1) return dp[i][s]; int ans = inf; for(int j = i + 1; j <= n; ++j){ ans = min(ans, f(j, s - 1)); if((a[j] - a[i] + 1) > cur) break; } for(int j = i + 1; j <= n; ++j){ ans = min(ans, f(j, s) + 1); if((a[j] - a[i] + 1) > 2 * cur) break; } return ans; } signed main(){ ios::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); cin >> n >> s >> b; for(int i = 0; i < n; ++i){ cin >> a[i]; } a[n] = inf; sort(a, a + n); int st = 0, en = 1e9 + 7, ans = 0; while(st <= en){ int mid = st + (en - st) / 2; cur = mid; if(f(0, s) <= b){ ans = mid; en = mid - 1; }else{ st = mid + 1; } } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...