题目链接
https://www.nowcoder.com/pat/6/problem/4056
思路分析
对于这道题目,主要是要找到最长的长度,我们先循环一次找到一个最长的长度,接下来就是一个比较问题了,发现其他的长度是否比目前的长度更长,如果是,则替换。
代码
#include<iostream>
#include<string>
#include<algorithm>
#define Max 100005
using namespace std;
int main()
{
long long a[Max+1];
long long N, P;
int ans = 1;
cin>> N >> P;
int i, j;
for( i=0; i<N; i++ ) cin >> arr[i];
sort(arr,arr+N);
for( j=0; j<N; j++ )
for( i=j+ans; i<N; i++ )
if( arr[i] <= arr[j]*P ){
if( i-j+1>ans ) ans=i-j+1;
}
else break;
cout<< ans <<endl;
return 0;
}