//二分法
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n,p;
vector<int> v;
int upper_bound(int left,int right,long long x){
while(left<right){
int mid=(left+right)/2;
if(v[mid]>x) right=mid;
else left=mid+1;
}
return left;
}
int main(){
cin>>n>>p;
v.resize(n);
for(int i=0;i<n;i++) cin>>v[i];
sort(v.begin(),v.end());
int ans=0;
for(int i=0;i<n;i++){
int j=upper_bound(i,n,(long long)v[i]*p); //注意long long
ans=j-i>ans?j-i:ans;
}
cout<<ans;
return 0;
}
PAT乙级-1030 完美数列(25 分)
最新推荐文章于 2024-10-01 04:50:10 发布