#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
struct Weapon {
int x, y;
bool destroyed;
};
struct Bomb {
int u, v;
bool used;
};
double calculateDistance(int x1, int y1, int x2, int y2) {
int dx = x1 - x2;
int dy = y1 - y2;
return sqrt(dx*dx + dy*dy);
}
int main() {
int M, n, k;
cin >> M >> n >> k;
vector<Weapon> weapons(M);
for (int i = 0; i < M; i++) {
cin >> weapons[i].x >> weapons[i].y;
weapons[i].destroyed = false;
}
vector<Bomb> bombs(n);
for (int i = 0; i < n; i++) {
cin >> bombs[i].u >> bombs[i].v;
bombs[i].used = false;
}
sort(bombs.begin(), bombs.end(), [](const Bomb& a, const Bomb& b) {
return calculateDistance(a.u, a.v, 0, 0) < calculateDistance(b.u, b.v, 0, 0);
});
int count = 0;
for (int i = 0; i < M; i++) {
bool destroyed = false;
for (int j = 0; j < n; j++) {
if (!bombs[j].used && !weapons[i].destroyed
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
struct Weapon {
int x, y;
bool destroyed;
};
struct Bomb {
int u, v;
bool used;
};
double calculateDistance(int x1, int y1, int x2, int y2) {
int dx = x1 - x2;
int dy = y1 - y2;
return sqrt(dx*dx + dy*dy);
}
int main() {
int M, n, k;
cin >> M >> n >> k;
vector<Weapon> weapons(M);
for (int i = 0; i < M; i++) {
cin >> weapons[i].x >> weapons[i].y;
weapons[i].destroyed = false;
}
vector<Bomb> bombs(n);
for (int i = 0; i < n; i++) {
cin >> bombs[i].u >> bombs[i].v;
bombs[i].used = false;
}
sort(bombs.begin(), bombs.end(), [](const Bomb& a, const Bomb& b) {
return calculateDistance(a.u, a.v, 0, 0) < calculateDistance(b.u, b.v, 0, 0);
});
int count = 0;
for (int i = 0; i < M; i++) {
bool destroyed = false;
for (int j = 0; j < n; j++) {
if (!bombs[j].used && !weapons[i].destroyed
&& calculateDistance(bombs[j].u, bombs[j].v, weapons[i].x, weapons[i].y) <= k) {
bombs[j].used = true;
count++;
destroyed = true;
}
}
if (destroyed) {
weapons[i].destroyed = true;
} else {
break;
}
}
cout << count << endl;
return 0;
} && calculateDistance(bombs[j].u, bombs[j].v, weapons[i].x, weapons[i].y) <= k) {
bombs[j].used = true;
count++;
destroyed = true;
}
}
if (destroyed) {
weapons[i].destroyed = true;
} else {
break;
}
}
cout << count << endl;
return 0;
}