PAT(A)1085 Perfect Sequence (25分)(双指针尺取法)

在这里插入图片描述

Sample Input

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

Sample Output

8

思路:
可以排序!可以排序!可以排序!
然后做双指针,i先进,然后不符合则j进。动态更新答案。
代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <cstring>

using namespace std;

#define endl '\n'

typedef long long ll;

ll a[100005];

int main()
{
    ll n, p;

    cin >> n >> p;

    for (int i = 0; i < n; ++i)
        cin >> a[i];

    sort(a, a + n);

    ll i = 0, j = 0;
    ll ans = -1;

    while (i < n && j < n)
    {
        while (j < n && a[i] * p >= a[j])
        {
            ans = max(ans, j - i + 1);
            j++;
        }
        i++;
    }

    cout << ans << endl;

    return 0;
}

发布了161 篇原创文章 · 获赞 7 · 访问量 7099

猜你喜欢

转载自blog.csdn.net/weixin_43778744/article/details/104047394