Untitled
#include <bits/stdc++.h> using namespace std; #define int long long void solve() { int n; cin >> n; vector<pair<int,int>> a; for (int i = 0; i < n; i++) { int x; cin >> x; a.push_back({x,0}); } //average double p = 1e-4; double l = p; double r = 1e9; double ans = 0; for(int i=0;i<100;i++){ double mid = l + (r-l)/2; debug(mid); vector<pair<int,int>> c; for(int i=0;i<n;i++){ c.push_back({a[i].first - mid,0}); } debug(c); int sum = 0; for(int i=0;i<c.size()-1;i++){ if(c[i].first>c[i+1].first){ if(c[i].second==0){ c[i].second = 1; sum += c[i].first; } else{ continue; } } else{ c[i+1].second = 1; sum += c[i+1].first; } // debug(sum); } debug(sum); if(sum>=0){ ans = mid; l = mid+p; } else{ r = mid+p; } debug(ans); } cout << fixed << setprecision(5) << ans << endl; //median int count = 0; int sum = 0; vector<int> b; for(int i=0;i<n-1;i++){ if(a[i].first>a[i+1].first){ if(a[i].second==0){ a[i].second = 1; count++; sum += a[i].first; b.push_back(a[i].first); } else{ continue; } } else{ a[i+1].second = 1; count++; sum += a[i+1].first; b.push_back(a[i+1].first); } } sort(b.begin(),b.end()); debug(b); cout << b[((b.size()+1)/2)-1] << endl; } signed main() { int t = 1; // cin >> t; while (t--) { solve(); } return 0; }
Leave a Comment