Untitled

 avatar
unknown
plain_text
2 months ago
1.6 kB
3
Indexable
#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