1085. Perfect Sequence (25)

来源:互联网 发布:highcharts数据过密 编辑:程序博客网 时间:2024/06/05 07:25

Given a sequence of positive integers and another positive integer p. The sequence is said to be a "perfect sequence" if M <= m * p where M and m are the maximum and minimum numbers in the sequence, respectively.

Now given a sequence and a parameter p, you are supposed to find from the sequence as many numbers as possible to form a perfect subsequence.

Input Specification:

Each input file contains one test case. For each case, the first line contains two positive integers N and p, where N (<= 105) is the number of integers in the sequence, and p (<= 109) is the parameter. In the second line there are N positive integers, each is no greater than 109.

Output Specification:

For each test case, print in one line the maximum number of integers that can be chosen to form a perfect subsequence.

Sample Input:
10 82 3 20 4 5 1 6 7 8 9
Sample Output:
8
#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){int N, p,maxNum,input,cnt;vector<int>vecNum;scanf("%d%d",&N,&p);for (int i = 0; i < N; ++i){scanf("%d",&input);vecNum.push_back(input);}maxNum = 0;sort(vecNum.begin(),vecNum.end());for (int i = 0; i < vecNum.size(); ++i){if (maxNum >= vecNum.size() - i)break;cnt = 1;for (int j = i + 1; j < vecNum.size(); ++j){if (vecNum[j] <= p*vecNum[i]){++cnt;}elsebreak;}if (cnt>maxNum)maxNum = cnt;}printf("%d",maxNum);return 0;}


0 1
原创粉丝点击