제출 #739909

#제출 시각아이디문제언어결과실행 시간메모리
739909danikoynovMeasures (CEOI22_measures)C++14
10 / 100
1560 ms1896 KiB
/** ____ ____ ____ ____ ____ ____ ||l |||e |||i |||n |||a |||d || ||__|||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\|/__\| **/ #include<bits/stdc++.h> #define endl '\n' using namespace std; typedef long long ll; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const int maxn = 2e5 + 10; int n, m; ll d, a[maxn], b[maxn]; bool check(double x) { double last = -1e18; for (int i = 1; i <= n; i ++) { if (last + d > a[i] + x) return false; last = max(last + d, a[i] - x); //cout << last << " " << a[i] << endl; } return true; } void solve_query() { sort(a + 1, a + n + 1); ll lf = 0, rf = 1e18; //cout << check(684538602442.5) << endl; //exit(0); while(lf <= rf) { ll mf = (lf + rf) / 2; //cout << lf << " " << rf << endl; if (check(mf)) rf = mf - 1; else lf = mf + 1; } double ans = lf; if (ans > 0 && check(ans - 0.5)) { ans = ans - 0.5; printf("%0.1f ", ans); } else { cout << (ll)(round(ans)) << " "; } } void solve() { cin >> n >> m >> d; for (int i = 1; i <= n; i ++) cin >> a[i]; for (int i = 1; i <= m; i ++) cin >> b[i]; for (int i = 1; i <= m; i ++) { n ++; a[n] = b[i]; solve_query(); } } int main() { ///freopen("test.txt", "r", stdin); solve(); 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...