#include<iostream>
using namespace std;
void Qsort(double *Array, int left, int right)
{
if (left >= right)
return;
int first = left;
int last = right;
int key = Array[first];
while (first < last)
{
while (first < last && Array[last] >= key)
last--;
Array[first] = Array[last];
while (first < last && Array[first] <= key)
{
++first;
}
Array[last] = Array[first];
}
Array[first] = key;
Qsort(Array, left, first - 1);
Qsort(Array, first + 1, right);
}
int main()
{
int N, p;
double Array[100000];
cin >> N >> p;
for (int i = 0; i < N; i++)
cin >> Array[i];
Qsort(Array, 0, N - 1);
int maxNum=0;
for (int i = 0; i < N; i++)
{
for (int j = i+maxNum; j < N; j++)
{
if (Array[j] > Array[i] * p)
break;
if (j - i + 1 > maxNum)
maxNum = j - i + 1;
}
}
cout << maxNum;
}
核心思路和陷阱: