先对输入的序列进行排序,然后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;}新闻热点
疑难解答