Submission #1209898

#TimeUsernameProblemLanguageResultExecution timeMemory
1209898basaSeesaw (JOI22_seesaw)C++20
0 / 100
1 ms524 KiB
#include "bits/stdc++.h"
#include <iomanip>

using namespace std;

#define int long long
#define ld long double

signed main()
{
  cin.tie(0) -> sync_with_stdio(0);
  int n;
  cin >> n;

  ld ldn = n;

  ld a[n];
  for(int i = 0; i < n; i++) cin >> a[i];

  ld sum = 0;
  for(int i = 0; i < n; i++) sum += a[i];

  int lm = 0, rm = n - 1;
  ld l = sum / ldn, r = sum / ldn;
  int cur = l;
  if(l > r) swap(l, r);
  ldn--;
  for(int i = 0; i < n - 1; i++){
    ld curl = (sum - a[lm]) / ldn, curr = (sum - a[rm]) / ldn;

    if(abs(cur - a[lm]) < abs(cur - a[rm])){
      if(curl <= r){
        cur = curl;
        sum -= a[lm];
        lm++;
      }
      else{
        l = min(l, curr);
        cur = curr;
        sum -= a[rm];
        rm--;
      }
    }
    else{
      if(curr >= l){
        cur = curr;
        sum -= a[rm];
        rm--;
      }
      else{
        r = max(r, curl);
        cur = curl;
        sum -= a[lm];
        lm++;
      }
    }

    ldn--;
  }

  cout << fixed << setprecision(10) << r - l << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...