제출 #976770

#제출 시각아이디문제언어결과실행 시간메모리
976770vjudge1구경하기 (JOI13_watching)C++17
0 / 100
1095 ms604 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int n; vector <ll> jalur; bool cek(int p, int q, int k, ll last) { if (last>=n) return true; if (p==0&&q==0) return false; bool a=false, b=false; if (q>0) { ll jq=jalur[last]-1+(k*2); ll akhir = upper_bound(jalur.begin(), jalur.end(), jq) - jalur.begin(); a = cek(p, q-1, k, akhir); } if (a) return true; if (p>0) { ll jp=jalur[last]-1+k; ll akhir = upper_bound(jalur.begin(), jalur.end(), jp) - jalur.begin(); b = cek(p-1, q, k, akhir); } return a||b; } int main() { int p, q; cin >> n >> p >> q; for (int i=0;i<n;i++) { ll x; cin >> x; jalur.push_back(x); } sort(jalur.begin(), jalur.end()); ll kiri=1, kanan = 1e9, mid, ans=1; while (kiri<=kanan) { mid = (kiri+kanan)/2; if (cek(p, q, mid, 0)) { ans = mid; kanan = mid-1; } else { kiri = mid+1; } } cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...