#include <bits/stdc++.h>
using namespace std;
void dk_98() {}
bool is_prime(int n) {
  if (n == 1) {
    return false;
  }
  if (n == 2) {
    return true;
  }
  int factors = 0;
  for (int i = 2; i < n; i++) {
    if (n % i == 0) {
      factors++;
      break;
    }
  }
  if (factors == 0) {
    return true;
  }
  return false;
}
long long power(long long a, long long b) {
  long long temp = a;
  long long ans = 1;
  while (b >= 1) {
    if (b & 1) {
      ans *= temp;
      ans %= 1000000007;
    }
    b >>= 1LL;
    temp *= (temp % 1000000007);
    temp %= 1000000007;
  }
  return ans;
}
long long modFact(long long n, long long p) {
  if (n >= p) return 0;
  long long result = 1;
  for (long long i = 1; i <= n; i++) result = (result * i) % p;
  return result;
}
long long gcd(long long a, long long b) {
  while (a != 0 && b != 0) {
    if (a > b) {
      a %= b;
    } else if (b > a) {
      b %= a;
    } else {
      return a;
    }
  }
  return max(a, b);
}
long long gcdExtended(long long a, long long b, long long *x, long long *y) {
  if (a == 0) {
    *x = 0, *y = 1;
    return b;
  }
  long long x1, y1;
  long long gcd = gcdExtended(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return gcd;
}
long long modInverse(long long b, long long m) {
  long long x, y;
  long long g = gcdExtended(b, m, &x, &y);
  if (g != 1) return -1;
  return (x % m + m) % m;
}
long long modDivide(long long a, long long b, long long m) {
  a = a % m;
  long long inv = modInverse(b, m);
  return ((inv * a) % m);
}
long long npr(long long n, long long r) {
  return modDivide(modFact(n, 1000000007), modFact(n - r, 1000000007),
                   1000000007);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  dk_98();
  int t = 1;
  while (t--) {
    int n;
    double n1, n2;
    cin >> n >> n1 >> n2;
    double arr[n];
    for (int i = 0; i < (int)(n); i++) {
      cin >> arr[i];
    }
    double sum1 = 0, sum2 = 0;
    int count1 = 0, count2 = 0;
    double average = 0;
    sort(arr, arr + n);
    reverse(arr, arr + n);
    if (n1 < n2) {
      for (int i = 0; i < (int)(n1); i++) {
        sum1 += arr[i];
      }
      for (int i = n1; i < n1 + n2; i++) {
        sum2 += arr[i];
      }
    } else {
      for (int i = 0; i < (int)(n2); i++) {
        sum2 += arr[i];
      }
      for (int i = n2; i < n1 + n2; i++) {
        sum1 += arr[i];
      }
    }
    cout.setf(ios::fixed, ios::floatfield);
    cout.precision(8);
    average += (sum1 / n1) + (sum2 / n2);
    cout << (sum1 / n1) + (sum2 / n2);
  }
}
