제출 #997447

#제출 시각아이디문제언어결과실행 시간메모리
997447crafticatMeasures (CEOI22_measures)C++17
10 / 100
1584 ms3584 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; constexpr ll pres = 1e4; constexpr ll inf = (1e18); constexpr ll epsilon = 1; ll d; bool ok(vector<ll> &arr, ll move) { ll lastPos = -inf; for (auto x : arr) { ll req = (lastPos + d) - x; req = max(req, -move); if (req > move) return false; lastPos = x + req; } return true; } double solve(vector<ll> arr) { std::sort(arr.begin(), arr.end()); ll l = 0, r = inf; while (r - l > 0) { ll mid = l + (r - l) / 2; if (ok(arr,mid)) { r = mid; } else { l = mid + epsilon; } } return l; } void printAns(ll ans) { cout << ans / pres; ans %= pres; if (ans != 0) cout << "."; ll mul = pres; while (ans != 0) { mul /= 10; cout << (ans / mul) % 10; ans %= mul; } } int main() { ll n, m; cin >> n >> m >> d; vector<ll> p; for (ll i = 0; i < n; ++i) { ll x; cin >> x; x *= pres; p.push_back(x); } d*=pres; for (ll i = 0; i < m; ++i) { ll x; cin >> x; x *= pres; p.push_back(x); ll ans = solve(p); if (ans >= inf / 2) exit(5); printAns(ans); cout << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...