1085. Perfect Sequence (25)

xiaoxiao2021-02-28  132

1085. Perfect Sequence (25)

时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng

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 8 2 3 20 4 5 1 6 7 8 9 Sample Output: 8

提交代码

用了two pointers的思想

#include<stdio.h> #include<algorithm> using namespace std; int a[100010],n,p; int main() { scanf("%d%d",&n,&p); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); int ans=1; int i=0,j=0; while(i<n&&j<n) { while(j<n&&a[j]<=(long long)a[i]*p) { j++; } ans=max(ans,j-i); i++; } printf("%d\n",ans); return 0; }

转载请注明原文地址: https://www.6miu.com/read-20773.html

最新回复(0)