func_code_string: #include <bits/stdc++.h>   using db = double;   int read() {     int x;     scanf( %d , &x);     return x;   }   const int N = 50007;   const db eps = 1e-10;   db x, y, k[N], b[N], ans;   int n, c, t[N * 2], las[N], L[N * 2], R[N * 2];   struct node {     db ang;     int id;   } a[N * 2];   db sqr(db a) { return a * a; }   void add(int p, int v) {     for (; p <= c; p += p & -p) t[p] += v;   }   int ask(int p) {     int s = 0;     for (; p; p ^= p & -p) s += t[p];     return s;   }   int check(db r) {     db A, B, C, D, X, Y;     int s = 0;     c = 0;     for (int i = 1; i <= n; ++i) {       A = sqr(k[i]) + 1, B = -2 * x + 2 * k[i] * (b[i] - y),       C = sqr(x) + sqr(b[i] - y) - sqr(r);       if (B * B + eps <= 4 * A * C) continue;       D = sqrt(sqr(B) - 4 * A * C), A *= 2;       X = (D - B) / A, Y = k[i] * X + b[i], a[++c] = {atan2(Y - y, X - x), i};       X = (-D - B) / A, Y = k[i] * X + b[i], a[++c] = {atan2(Y - y, X - x), i};     }     std::sort(a + 1, a + c + 1,               [](const node& a, const node& b) { return a.ang < b.ang; });     for (int i = 1, id; i <= c; ++i)       las[id = a[i].id] ? s += ask(i) - ask(las[id]), add(las[id], -1),           las[id] = 0   : (add(i, 1), las[id] = i);     return s;   }   int pre[100010], nxt[100010], lst;   db cal(int i, int j) {     db X = (b[j] - b[i]) / (k[i] - k[j]), Y = X * k[i] + b[i];     return sqrt(sqr(X - x) + sqr(Y - y));   }   int main() {     db l = 0;     int m, s = 0;     n = read(), x = read() / 1000.0, y = read() / 1000.0, m = read();     for (int i = 1; i <= n; ++i) k[i] = read() / 1000.0, b[i] = read() / 1000.0;     for (db r = 1e13, mid, i = 100; i > 0; --i)       check(mid = (l + r) / 2) < m ? l = mid : r = mid;     check(l);     for (int i = 1, j = 0, p; i <= c; ++i)       if (las[a[i].id]) {         for (p = j; p > las[a[i].id]; p = L[p]) ++s, ans += cal(a[i].id, a[p].id);         R[L[p]] = R[p], L[R[p]] = L[p];         if (p == j) j = L[j];       } else         R[j] = i, L[i] = j, j = i, las[a[i].id] = i;     printf( %.10lf , ans + l * (m - s));   }   