PAT (Basic Level) Practice (中文)1030 完美数列 (25 分) (有点意思)

给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 Mmp,则称这个数列是完美数列。

现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

输入格式:

输入第一行给出两个正整数 N 和 p,其中 N(≤)是输入的正整数的个数,p(≤)是给定的参数。第二行给出 N 个正整数,每个数不超过 1。

输出格式:

在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

输入样例:

10 8
2 3 20 4 5 1 6 7 8 9

输出样例:

8
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <string>
 4 #include <cstring>
 5 #include <queue>
 6 using namespace std;
 7 int m,n;
 8 double a[100005];
 9 int main()
10 {
11     while(cin>>m>>n){
12         for(int i=0;i<m;i++){
13             cin>>a[i];
14         }
15         sort(a,a+m);
16         int maxm=1;
17         for(int i=0;i<m;i++){
18             for(int j=i+maxm;j<m;j++){
19                 if(a[j]<=a[i]*n){
20                     if(maxm<(j-i+1)){
21                         maxm=j-i+1;
22                     }
23                 }else{
24                     break;
25                 }
26             }
27         }
28         cout<<maxm<<endl;
29     }
30     return 0;
31 } 

 

posted @ 2019-07-15 08:25  wydxry  阅读(333)  评论(0编辑  收藏  举报
Live2D