/*
* poj2536.cpp
*
* Created on: 2010-8-13
* Author: friendy
*/
//注意到以下三点,直接匈牙利。
#include
#include
#include
using namespace std;
double x[110][2], y[110][2];
int n, m;
double s, v;
int maps[110][110], links[110], used[110];
int ok(int i, int j) {
double dis = (y[j][1] - x[i][1]) * (y[j][1] - x[i][1])
+ (y[j][0] - x[i][0]) * (y[j][0] - x[i][0]);
double p = s * s * v * v;
if (p >= dis)
return 1;
else
return 0;
}
int path(int u) {
int j;
for (j = 0; j < m; j++) {
if (!used[j] && maps[u][j]) {
used[j] = 1;
if (links[j] == -1 || path(links[j])) {
links[j] = u;//第一次忘了写了
return 1;
}
}
}
return 0;
}
int main() {
int i, j;
while (scanf("%d%d%lf%lf", &n, &m, &s, &v) != EOF) {//第二次不知道是多case
for (i = 0; i < n; i++) {
scanf("%lf%lf", &x[i][0], &x[i][1]);
}
for (i = 0; i < m; i++) {
scanf("%lf%lf", &y[i][0], &y[i][1]);
}
memset(maps, 0, sizeof(maps));
memset(links, -1, sizeof(links));
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
if (ok(i, j))
maps[i][j] = 1;
}
}
int cnt = 0;
for (i = 0; i < n; i++) {
memset(used, 0, sizeof(used));
if (path(i))
cnt++;
}
printf("%d/n", n - cnt);//应该输出受害的
}
return 0;
}