先对输入的序列进行排序,然后low对应开始min,high对应max位置+1,知道high到尾部,结束
存储过程中最大数量
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
long long int N, p;
cin >> N >> p;
vector<long long int> all(N);
for (int t = 0;t < N;t++)
cin >> all[t];
sort(all.begin(), all.end());//排序
int low = 0;int high = 0, count=0;
while (high < N) {
while (high < N && all[high] <= all[low]*p) high++;//找到low对于的最高点的下一位置
count=count > high - low ? count : high - low;//和当前count比较
low++;
}
cout << count << endl;
}