10
-405 -230 252 -393 -390 -259 97 163 81 -129
 3
10000 -10000 10000
 1
-10000
 20
-16 -23 29 44 -40 -50 -41 34 -38 30 -12 28 -44 -49 15 50 -28 38 -2 0

702.333333333333712
 10000.000000000016371
 0.000000000000000
 113.875000000000043

#include <bits/stdc++.h>
using namespace std;
double f(double m, vector<int> &v) {
  int n = v.size();
  vector<long double> v2(n);
  for (int i = 0; i < (n); i++) v2[i] = v[i] - m;
  long double mx_otr = 0;
  long double mn_otr = 0;
  long double cur = 0;
  for (int i = 0; i < (n); i++) {
    cur += v2[i];
    if (cur < 0) cur = 0;
    mx_otr = max(mx_otr, cur);
  }
  cur = 0;
  for (int i = 0; i < (n); i++) {
    cur += v2[i];
    if (cur >= 0) cur = 0;
    mn_otr = min(mn_otr, cur);
  }
  return max(mx_otr, abs(mn_otr));
}
inline void solve() {
  int n;
  cin >> n;
  vector<int> v(n);
  for (int i = 0; i < (n); i++) cin >> v[i];
  long double l = -10000, r = 10000;
  while (abs(r - l) > 1e-12) {
    long double m1 = l + (r - l) / 3;
    long double m2 = r - (r - l) / 3;
    if (f(m1, v) <= f(m2, v))
      r = m2;
    else
      l = m1;
  }
  cout << fixed << setprecision(10) << f(l + (r - l) / 2.0, v);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int q = 1;
  while (q--) {
    solve();
    cout << '\n';
  }
}
