PTA1030完美数列二分法解决超时
#include"bits/stdc++.h"
using namespace std;
const int N=100010;
long long ans,n,p;
long long a[N];
int main()
{
cin>>n>>p;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++)
{
long long l=i,r=n-1;
while(l<r)
{
long long mid=l+r+1>>1;
if(a[mid]<=a[i]*p ) l=mid;
else r=mid-1;
}
ans=max(ans,r-i+1);
}
cout<<ans;
return 0;
}

浙公网安备 33010602011771号