注意点:数据类型long long,二分法查找(upper_bound函数)。
代码如下:
#include<bits/stdc++.h>
#define lowbit(x) ((x)&(-(x)))
#define ll long long
#define INF 0x3f3f3f3f
#define CLR(a) memset(a, 0, sizeof(a))
using namespace std;
ll p;
int n;
int main() {
scanf("%d%lld",&n,&p);
vector<ll> a(n);
for(int i=0;i<n;i++)
scanf("%lld",&a[i]);
sort(a.begin(),a.end());
int ans=0;
for(int i=0;i<n;i++){
int tmp=upper_bound(a.begin(),a.end(),a[i]*p)-a.begin();
if(tmp-i>ans)
ans=tmp-i;
}
cout<<ans<<endl;
return 0;
}