#include <bits/stdc++.h>
using namespace std;
vector<long long> a;
long long n;
long long pos1;
double ct1, ct2 = 0;
long long z;
long long fun(long long l, long long r, vector<vector<long long> > dpp) {
  if (dpp[l][r] != -1) return dpp[l][r];
  long long i, j, sum = 0;
  for (i = l; i < r; i++) {
    long long z = abs(a[i] - a[i + 1]);
    z = z * pow(-1, i - l);
    sum += z;
  }
  return dpp[l][r] = sum;
}
long long solve(long long l, long long r, vector<vector<long long> > dp,
                vector<vector<long long> > dpp) {
  if (l > r) return 0;
  if (dp[l][r] != -1) return dp[l][r];
  long long x, y;
  x = solve(l + 1, r, dp, dpp);
  long long z = fun(l, r, dpp);
  y = solve(l, r - 1, dp, dpp);
  return dp[l][r] = max(z, max(x, y));
}
int main() {
  long long i, j, k, l, m, t;
  t = 1;
  while (t--) {
    long long a, b;
    cin >> n >> a >> b;
    vector<long long> v;
    for (i = 0; i < n; i++) {
      cin >> k;
      v.push_back(k);
    }
    sort(v.begin(), v.end());
    m = min(a, b);
    b = max(a, b);
    a = m;
    i = n - 1;
    long long sum1 = 0, sum2 = 0;
    while (m--) {
      sum1 += v[i];
      i--;
    }
    double ans1 = (double)sum1 / a;
    m = b;
    while (m--) {
      sum2 += v[i];
      i--;
    }
    double ans2 = (double)sum2 / b;
    ans1 += ans2;
    cout << fixed << setprecision(12) << ans1;
  }
  return 0;
}
