记录编号 320259 评测结果 AAAAAAAAA
题目名称 [POJ 2823]滑动窗口 最终得分 100
用户昵称 Gravatar半汪 是否通过 通过
代码语言 C++ 运行时间 0.813 s
提交时间 2016-10-11 20:03:47 内存使用 11.76 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue> 
using namespace std;
deque<int>qmax;
deque<int>qmin;
const int maxn=1000010;
int a[maxn],n,k;
int minvalue[maxn],maxvalue[maxn];
int main(){
	freopen("window.in","r",stdin);
	freopen("window.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=k;i++){
		scanf("%d",&a[i]);
		while(!qmax.empty()&&a[qmax.back()]<a[i])qmax.pop_back();
		qmax.push_back(i);
		while(!qmin.empty()&&a[qmin.back()]>a[i])qmin.pop_back();
		qmin.push_back(i);
	}
	for(int i=k+1;i<=n+1;i++){
		minvalue[i]=a[qmin.front()];
		maxvalue[i]=a[qmax.front()];
		if(qmin.front()<=i-k)qmin.pop_front();
		if(qmax.front()<=i-k)qmax.pop_front();
		if(i!=n+1)scanf("%d",&a[i]);
		while(!qmax.empty()&&a[qmax.back()]<a[i])qmax.pop_back();
		qmax.push_back(i);
		while(!qmin.empty()&&a[qmin.back()]>a[i])qmin.pop_back();
		qmin.push_back(i);
	}
	for(int i=k+1;i<=n+1;i++)printf("%d ",minvalue[i]);
	printf("\n");
	for(int i=k+1;i<=n+1;i++)printf("%d ",maxvalue[i]);
    return 0;
}