// WA (嘘: 連続部分列のみを考えてよい (反例: 一部の答えが2のケース)) #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; long long l, r; std::cin >> n >> l >> r; std::vector a(n); for (auto &e : a) std::cin >> e; std::sort(a.begin(), a.end()); int ans = 1; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { const long long x = a[i] * a[i + 1]; const long long y = a[j - 1] * a[j]; const long long z = a[i] * a[j]; const long long min_prod = std::min({ x, y, z }); const long long max_prod = std::max({ x, y, z }); if (l <= min_prod and max_prod <= r) { ans = std::max(ans, j - i + 1); } else { break; } } } std::cout << ans << std::endl; }