完美数列
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
输入描述:
输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过10^9。
输出描述:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。
我的程序如下,运行会超时,如何修改
package list;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int p = sc.nextInt();
ArrayList<Integer> arry = new ArrayList<Integer>();
for(int i=0;i<num;i++){
arry.add(sc.nextInt());
}
Collections.sort(arry);
int temp=0,temp1=0;
int count=0,count1=0;
for(int i=0;i<arry.size();i++){
temp =arry.get(i);
if(arry.size()-i+1<=count){
break;
}
for(int j=arry.size()-1;j>0;j--){
temp1=arry.get(j);
if(temp1<temp*p){
count1=j-i+1;
}
count=count1>count?count1:count;
}
}
System.out.println(count);
}
}