#include <bits/stdc++.h>
int c[100010];
double t(int n1, int n2);
int cmp(const void *a, const void *b);
int main() {
  int i, j, n, n1, n2;
  double a, b, r;
  scanf("%d%d%d", &n, &n1, &n2);
  for (i = 0; i < n; i++) scanf("%d", c + i);
  qsort(c, n, sizeof(int), cmp);
  a = t(n1, n2);
  r = b = t(n2, n1);
  if (a > r) {
    r = a;
  }
  printf("%lf", r);
  return 0;
}
double t(int n1, int n2) {
  int i;
  double r1, r2;
  r1 = r2 = 0;
  for (i = 0; i < n1; i++) {
    r1 += (double)c[i];
  }
  r1 /= (double)n1;
  for (i = 0; i < n2; i++) {
    r2 += (double)c[n1 + i];
  }
  r2 /= (double)n2;
  return r1 + r2;
}
int cmp(const void *a, const void *b) {
  int *x = (int *)a;
  int *y = (int *)b;
  if (x[0] > y[0]) {
    return -1;
  } else if (x[0] == y[0]) {
    return 0;
  } else {
    return 1;
  }
}
