Submission #1127062

#TimeUsernameProblemLanguageResultExecution timeMemory
1127062zNatsumiSeesaw (JOI22_seesaw)C++20
67 / 100
2105 ms299816 KiB
#include <bits/stdc++.h> using namespace std; #define int long long using ii = pair<int, int>; using tp = tuple<long double, int, int>; const int N = 2e5 + 5; const long long INF = 1e18; int n, a[N]; namespace sub3{ long double value[5005][5005], res = INF; void solve(){ for(int i = 1; i <= n; i++){ int sum = 0; for(int j = i; j <= n; j++){ sum += a[j]; value[i][j] = (long double)sum / (j - i + 1); } } priority_queue<tp, vector<tp>, greater<>> pq; for(int i = 1; i <= n; i++) for(int j = i; j <= n; j++) pq.push({value[i][j], i, j}); multiset<long double> s; for(int i = 1; i <= n; i++) s.insert(value[1][i]); while(pq.size()){ auto [mn, l, r] = pq.top(); pq.pop(); res = min(res, *s.rbegin() - mn); s.erase(s.find(mn)); s.insert(value[l + 1][r + 1]); if(l == 1 && r == n) break; } cout << setprecision(12) << fixed << res << "\n"; } } int32_t main(){ cin.tie(0)->sync_with_stdio(0); cin >> n; for(int i = 1; i <= n; i++) cin >> a[i]; sub3::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...