记录编号 527086 评测结果 AAAAAAAAA
题目名称 [POJ 2823]滑动窗口 最终得分 100
用户昵称 GravatarHzoi_chairman 是否通过 通过
代码语言 C++ 运行时间 1.993 s
提交时间 2019-02-10 11:32:19 内存使用 14.73 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<deque>
using namespace std;
#define maxn 1000100
deque<int> mi,ma;
int m1[maxn],m2[maxn],a[maxn];
void update(int i)
{
    while(!mi.empty()&&a[i]<=a[mi.back()])mi.pop_back();
    mi.push_back(i);
    while(!ma.empty()&&a[i]>=a[ma.back()])ma.pop_back();
    ma.push_back(i);
    m1[i]=a[mi.front()];
    m2[i]=a[ma.front()];
}
int main()
{
    freopen("window.in","r",stdin);
	freopen("window.out","w",stdout);
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<k;i++)
    {
        update(i);
    }
    for(int i=k;i<=n;i++)
    {
        while(!mi.empty()&&mi.front()<=i-k)mi.pop_front();
        while(!ma.empty()&&ma.front()<=i-k)ma.pop_front();
        update(i);
    }
    for(int i=k;i<=n;i++)printf("%d ",m1[i]);
    puts("");
    for(int i=k;i<=n;i++)printf("%d ",m2[i]);
}