func_code_string: #include <bits/stdc++.h>   using namespace std;   pair<int, int> a[110];   int n, k;   double p[110];   double dp[110][110];   int was[110][110];   double dist(pair<int, int> a, pair<int, int> b) {     double x = a.first - b.first;     double y = a.second - b.second;     return sqrt(x * x + y * y);   }   double rec(int pos, int kol) {     if (pos == n) {       if (kol >= k) return 1;       return 0;     }     if (was[pos][kol]) return dp[pos][kol];     was[pos][kol] = 1;     double res = p[pos] * rec(pos + 1, kol + 1);     res += (1 - p[pos]) * rec(pos + 1, kol);     return dp[pos][kol] = res;   }   int main() {     scanf( %d , &n);     int x, y, e;     scanf( %d%d , &k, &e);     scanf( %d%d , &x, &y);     e = 1000 - e;     for (int i = (0); i < (n); ++i) scanf( %d%d , &a[i].first, &a[i].second);     double l = 0, r = 1e40;     double best = -1;     for (int i = (0); i < (1000); ++i) {       double m = (l + r) / 2;       for (int i = (0); i < (n); ++i) {         double d = dist(make_pair(x, y), a[i]);         if (d <= m)           p[i] = 1;         else {           double k = d * d / m / m;           p[i] = exp(1.0 - k);         }       }       memset(was, 0, sizeof(was));       double prob = rec(0, 0);       if (prob * 1000 >= e) {         best = m;         r = m;       } else         l = m;     }     printf( %.10lf n , best);     return 0;   }   