排序后贪心
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n, p;
scanf("%d%d", &n, &p);
vector<long long> arr(n);
for(int i = 0; i < n; ++i){
scanf("%lld", &arr[i]);
}
sort(begin(arr), end(arr));
int maxlen = 0, low = 0, high = 0;
while(true){
while(high < n && arr[high] <= arr[low]*p)
++high;
if(high - low > maxlen)
maxlen = high - low;
if(high == n)
break;
while(low < high && arr[low]*p < arr[high])
++low;
}
cout << maxlen;
return 0;
}