#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
template <typename T>
inline bool remin(T& c, const T& n) {
  if (n < c) {
    c = n;
    return 1;
  }
  return 0;
}
template <typename T>
inline bool remin2(T& c, const T& n) {
  if (c < 0 || n < c) {
    c = n;
    return 1;
  }
  return 0;
}
template <typename T>
inline bool remax(T& c, const T& n) {
  if (c < n) {
    c = n;
    return 1;
  }
  return 0;
}
template <typename T>
inline void addmod(T& c, const T& n, const T& m) {
  c = (c + n) % m;
}
int _in;
int in() {
  scanf("%d", &_in);
  return _in;
}
const int N = 1e4 + 5;
const double eps = 1e-9;
double lost, maj[N], take, cp[N];
int main() {
  int n, i, j, it;
  double lo, hi, mi;
  ;
  scanf("%d%lf\n", &n, &lost);
  lost = 1.0 - lost / 100.0;
  for ((i) = (0); (i) < (n); ++(i)) {
    scanf("%lf", maj + i);
  }
  sort(maj, maj + n);
  copy(maj, maj + n, cp);
  lo = maj[0];
  hi = maj[n - 1];
  for ((it) = (0); (it) < (100); ++(it)) {
    copy(cp, cp + n, maj);
    mi = (lo + hi) / 2.0;
    i = 0;
    j = n - 1;
    while (true) {
      for (; i < j && maj[i] > mi - eps; ++i)
        ;
      for (; i < j && maj[j] < mi + eps; --j)
        ;
      if (i == j) {
        break;
      }
      take = min(maj[j] - mi, (mi - maj[i]) / lost);
      maj[j] -= take;
      maj[i] += take * lost;
    }
    for ((i) = (0); (i) < (n); ++(i)) {
      if (maj[i] < mi - eps) {
        break;
      }
    }
    (i == n ? lo : hi) = mi;
  }
  printf("%.10lf\n", lo);
  return 0;
}
