#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
struct Point {
double x, y;
Point() {}
Point(double x, double y) : x(x), y(y) {}
};
double dist2(const Point& a, const Point& b) {
double dx = a.x - b.x;
double dy = a.y - b.y;
return dx * dx + dy * dy;
}
int N, M, K;
vector<Point> targets; // 目标点
vector<Point> deployments; // 部署点
// 检查半径R是否可行
bool check(double R) {
double R2 = R * R;
vector<int> cover(M, 0); // 每个部署点覆盖的目标点掩码
for (int j = 0; j < M; ++j) {
int mask = 0;
for (int i = 0; i < N; ++i) {
if (dist2(deployments[j], targets[i]) <= R2 + 1e-9) {
mask |= (1 << i);
}
}
cover[j] = mask;
}
const int INF = 1e9;
int full = (1 << N) - 1;
vector<int> dp(full + 1, INF);
dp[0] = 0;
// 状态压缩DP,类似01背包
for (int j = 0; j < M; ++j) {
int mask = cover[j];
if (mask == 0) continue;
for (int s = full; s >= 0; --s) {
if (dp[s] < INF) {
int ns = s | mask;
if (dp[ns] > dp[s] + 1) {
dp[ns] = dp[s] + 1;
}
}
}
}
return dp[full] <= K;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> N >> M >> K;
targets.resize(N);
for (int i = 0; i < N; ++i) {
cin >> targets[i].x >> targets[i].y;
}
deployments.resize(M);
for (int j = 0; j < M; ++j) {
cin >> deployments[j].x >> deployments[j].y;
}
// 计算二分上界:所有目标点到所有部署点的最大距离
double maxDist = 0;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
double d = sqrt(dist2(targets[i], deployments[j]));
if (d > maxDist) maxDist = d;
}
}
// 特殊情况:如果最大距离为0,直接输出0
if (maxDist < 1e-9) {
cout << fixed << setprecision(6) << 0.0 << endl;
return 0;
}
// 二分半径R
double lo = 0, hi = maxDist;
for (int iter = 0; iter < 60; ++iter) {
double mid = (lo + hi) / 2;
if (check(mid)) {
hi = mid;
} else {
lo = mid;
}
}
cout << fixed << setprecision(6) << hi << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBvaW50IHsKICAgIGRvdWJsZSB4LCB5OwogICAgUG9pbnQoKSB7fQogICAgUG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KSA6IHgoeCksIHkoeSkge30KfTsKCmRvdWJsZSBkaXN0Mihjb25zdCBQb2ludCYgYSwgY29uc3QgUG9pbnQmIGIpIHsKICAgIGRvdWJsZSBkeCA9IGEueCAtIGIueDsKICAgIGRvdWJsZSBkeSA9IGEueSAtIGIueTsKICAgIHJldHVybiBkeCAqIGR4ICsgZHkgKiBkeTsKfQoKaW50IE4sIE0sIEs7CnZlY3RvcjxQb2ludD4gdGFyZ2V0czsgICAgICAvLyDnm67moIfngrkKdmVjdG9yPFBvaW50PiBkZXBsb3ltZW50czsgIC8vIOmDqOe9sueCuQoKLy8g5qOA5p+l5Y2K5b6EUuaYr+WQpuWPr+ihjApib29sIGNoZWNrKGRvdWJsZSBSKSB7CiAgICBkb3VibGUgUjIgPSBSICogUjsKICAgIHZlY3RvcjxpbnQ+IGNvdmVyKE0sIDApOyAvLyDmr4/kuKrpg6jnvbLngrnopobnm5bnmoTnm67moIfngrnmjqnnoIEKICAgIGZvciAoaW50IGogPSAwOyBqIDwgTTsgKytqKSB7CiAgICAgICAgaW50IG1hc2sgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSB7CiAgICAgICAgICAgIGlmIChkaXN0MihkZXBsb3ltZW50c1tqXSwgdGFyZ2V0c1tpXSkgPD0gUjIgKyAxZS05KSB7CiAgICAgICAgICAgICAgICBtYXNrIHw9ICgxIDw8IGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdmVyW2pdID0gbWFzazsKICAgIH0KCiAgICBjb25zdCBpbnQgSU5GID0gMWU5OwogICAgaW50IGZ1bGwgPSAoMSA8PCBOKSAtIDE7CiAgICB2ZWN0b3I8aW50PiBkcChmdWxsICsgMSwgSU5GKTsKICAgIGRwWzBdID0gMDsKCiAgICAvLyDnirbmgIHljovnvKlEUO+8jOexu+S8vDAx6IOM5YyFCiAgICBmb3IgKGludCBqID0gMDsgaiA8IE07ICsraikgewogICAgICAgIGludCBtYXNrID0gY292ZXJbal07CiAgICAgICAgaWYgKG1hc2sgPT0gMCkgY29udGludWU7CiAgICAgICAgZm9yIChpbnQgcyA9IGZ1bGw7IHMgPj0gMDsgLS1zKSB7CiAgICAgICAgICAgIGlmIChkcFtzXSA8IElORikgewogICAgICAgICAgICAgICAgaW50IG5zID0gcyB8IG1hc2s7CiAgICAgICAgICAgICAgICBpZiAoZHBbbnNdID4gZHBbc10gKyAxKSB7CiAgICAgICAgICAgICAgICAgICAgZHBbbnNdID0gZHBbc10gKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRwW2Z1bGxdIDw9IEs7Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKCiAgICBjaW4gPj4gTiA+PiBNID4+IEs7CiAgICB0YXJnZXRzLnJlc2l6ZShOKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSB7CiAgICAgICAgY2luID4+IHRhcmdldHNbaV0ueCA+PiB0YXJnZXRzW2ldLnk7CiAgICB9CiAgICBkZXBsb3ltZW50cy5yZXNpemUoTSk7CiAgICBmb3IgKGludCBqID0gMDsgaiA8IE07ICsraikgewogICAgICAgIGNpbiA+PiBkZXBsb3ltZW50c1tqXS54ID4+IGRlcGxveW1lbnRzW2pdLnk7CiAgICB9CgogICAgLy8g6K6h566X5LqM5YiG5LiK55WM77ya5omA5pyJ55uu5qCH54K55Yiw5omA5pyJ6YOo572y54K555qE5pyA5aSn6Led56a7CiAgICBkb3VibGUgbWF4RGlzdCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTTsgKytqKSB7CiAgICAgICAgICAgIGRvdWJsZSBkID0gc3FydChkaXN0Mih0YXJnZXRzW2ldLCBkZXBsb3ltZW50c1tqXSkpOwogICAgICAgICAgICBpZiAoZCA+IG1heERpc3QpIG1heERpc3QgPSBkOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDnibnmrormg4XlhrXvvJrlpoLmnpzmnIDlpKfot53nprvkuLow77yM55u05o6l6L6T5Ye6MAogICAgaWYgKG1heERpc3QgPCAxZS05KSB7CiAgICAgICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oNikgPDwgMC4wIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8g5LqM5YiG5Y2K5b6EUgogICAgZG91YmxlIGxvID0gMCwgaGkgPSBtYXhEaXN0OwogICAgZm9yIChpbnQgaXRlciA9IDA7IGl0ZXIgPCA2MDsgKytpdGVyKSB7CiAgICAgICAgZG91YmxlIG1pZCA9IChsbyArIGhpKSAvIDI7CiAgICAgICAgaWYgKGNoZWNrKG1pZCkpIHsKICAgICAgICAgICAgaGkgPSBtaWQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbG8gPSBtaWQ7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpIDw8IGhpIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==