#include #include #include #include using namespace std; int main(){ int n; double r, a, b, x, y, x_1, x_2, y_1, y_2, A, B, C, abs1, abs2; cin >> n >> r >> a >> b; //int x[n], y[n]; vector > inters; // True = end!! for (int i = 0; i < n; i++){ cin >> x >> y; if (a == 0){ x_1 = x_2 = 0; if (r * r - x * x < 0) continue; y_1 = y + sqrt(r * r - x * x); y_2 = y - sqrt(r * r - x * x); } else if (b == 0){ y_1 = y_2 = 0; if (r * r - y * y < 0) continue; x_1 = x + sqrt(r * r - y * y); x_2 = x - sqrt(r * r - y * y); } else { B = -(2 * x + 2 * (b/a) * y); A = 1 + (b * b) / (a * a); C = x * x + y * y - r * r; if (B * B - 4 * A * C < 0) continue; x_1 = (B + sqrt(B * B - 4 * A * C)) / (2 * A); x_2 = (B - sqrt(B * B - 4 * A * C)) / (2 * A); y_1 = b * x_1 / a; y_2 = b * x_2 / a; } abs1 = x_1 * x_1 + y_1 * y_1; //kvadrat abs2 = x_2 * x_2 + y_2 * y_2; if ((y_1 <= 0 && x_1 < 0) or (y_1 < 0 && x_1 > 0)){ abs1 *= -1; } if ((y_2 <= 0 && x_2 < 0) or (y_2 < 0 && x_2 > 0)){ abs2 *= -1; } inters.push_back(make_pair(min(abs1, abs2), false)); inters.push_back(make_pair(max(abs1, abs2), true)); } sort(inters.begin(), inters.end()); int count = 0; int mx = 0; /*for (int i = 0; i < inters.size(); i++){ cout << inters[i].first << ' ' << inters[i].second << endl; }*/ for (int i = 0; i < inters.size(); i++){ if (!inters[i].second) count++; else count--; //if (i != inters.size() - 1 && inters[i].first == inters[i + 1].first) // continue; mx = max(count, mx); } cout << mx << endl; }