给定⼀个正整数数列,和正整数p,设这个数列中的最⼤值是M,最⼩值是m,如果M <= m * p,则称 这个数列是完美数列。
现在给定参数p和⼀些正整数,请你从中选择尽可能多的数构成⼀个完美数列。
输⼊格式:
输⼊第⼀⾏给出两个正整数N和p,其中N(<= 105)是输⼊的正整数的个数,p(<= 109)是给定的参 数。第⼆⾏给出N个正整数,每个数不超过109。
输出格式:
在⼀⾏中输出最多可以选择多少个数可以⽤它们组成⼀个完美数列。
输⼊样例:
10 8 2 3 20 4 5 1 6 7 8 9
输出样例:
8
分析:先对数列从小到大排序
#includeusing namespace std; int main(){ int n; long long p; cin>>n>>p; vector v(n); for(int i=0;i >v[i]; sort(v.begin(),v.end()); int result=0,temp=0; for(int i=0;i result) result=temp; }else{ break; //跳出内层循环后,i++, } } } cout< 版本二: #includeusing namespace std; const int N=1e5+10; typedef long long int LL; LL a[N]; int main(){ LL n,p; cin>>n>>p; for(int i=0;i >a[i]; sort(a,a+n); int ans=0; //j慢,i快,a[j]表示最小值,a[i]表示最大值 for(int i=0,j=0;i



