大二带专生


私信TA

用户名:dotcpp0676254

访问量:549

签 名:

等  级
排  名 9265
经  验 1168
参赛次数 0
文章发表 18
年  龄 0
在职情况 学生
学  校 职业技术学院
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

#include<iostream>

#include<algorithm>

using namespace std;

const int N = 1e7 + 10, M = 500;

int a[N], q[M];

int n, k;

int main()

{

    scanf("%d%d", &n, &k);

    for (int i = 0; i < n; i++)

        scanf("%d",&a[i]);

    int hh = 0, tt = -1;

    for (int i = 0; i < n; i++)

    {

        while (hh <= tt && i - k + 1 > q[hh])

            hh++;

        while (hh <= tt && a[i] < a[q[tt]])

            tt--;

        q[++tt] = i;

        if (i >= k - 1)

            cout << a[q[hh]] << " ";

    }

    puts(" ");

    hh = 0, tt = -1;

    for (int i = 0; i < n; i++)

    {

        while (hh <= tt && i - k + 1 > q[hh])

            hh++;

        while (hh <= tt && a[i] > a[q[tt]])

            tt--;

        q[++tt] = i;

        if (i >= k - 1)

            cout << a[q[hh]] << " ";

    }

}


 

0.0分

0 人评分

  评论区

  • «
  • »