#include #define FOR(i, n) for(int i = 0; i < (n); ++i) #define REP(i, a, b) for(int i = (a); i < (b); ++i) #define TRAV(i, a) for(auto &i : (a)) #define X first #define Y second #define MP std::make_pair #define PR std::pair #define SZ(x) ((int)(x).size()) typedef long long ll; typedef std::pair PII; typedef std::vector VI; typedef long double K; struct vec2{ K x, y; vec2() {} vec2(K x, K y) : x(x), y(y) {} vec2 operator -(){ return vec2(-this->x, -this->y);} }; std::ostream & operator << (std::ostream &out, vec2 a){ out << "(" << a.x << ", " << a.y << ")"; return out; } K dot(vec2 a, vec2 b){ return a.x*b.x + a.y*b.y; } K len(vec2 a){ return std::sqrt(dot(a, a));} K angle(vec2 a, vec2 b){ return std::acos(std::max((K)-1, std::min((K)1, dot(a, b)*(1/(len(a)*len(b)))))); } vec2 rot(vec2 a, K ang){ vec2 my; my.x = a.x*std::cos(ang)-a.y*std::sin(ang); my.y = a.x*std::sin(ang)+a.y*std::cos(ang); return my; } int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(0); int n, r, a, b; std::cin >> n >> r >> a >> b; vec2 vec = vec2(a, b); vec2 zer = vec2(1, 0); K an = angle(vec, zer); if(vec.y > 0){ an = -an; } std::vector > ev; FOR(i, n){ int x, y; std::cin >> x >>y; vec2 xd = rot(vec2(x, y), an); K h2 = xd.y*xd.y; K r2 = 1ll*r*r; if(r2 < h2) continue; K d = std::sqrt(r2-h2); ev.push_back(MP(xd.x-d-0.000000001, 1)); ev.push_back(MP(xd.x+d+0.000000001, -1)); } std::sort(ev.begin(), ev.end()); int max = 0; int cur = 0; TRAV(i, ev){ cur += i.Y; max = std::max(max, cur); } std::cout << max; return 0; }