比赛 Segment Tree Competition 评测结果 AAAAAAAAA
题目名称 滑动窗口 最终得分 100
用户昵称 沉迷学习的假的Keller 运行时间 1.424 s
代码语言 C++ 内存使用 7.06 MiB
提交时间 2016-08-28 20:59:43
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int a[1000000+10],q[1000000+10];
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]);	
	}
	int h,t;
	h=1;t=0;
	for(int i=1;i<=n;i++){
		while(h<=t&&a[i]<=a[q[t]])	t--;
		q[++t]=i;
		while(h<=t&&q[t]-q[h]>=k) h++;
		if(i>=k) printf("%d ",a[q[h]]);
	}
	printf("\n");
	h=1;t=0;
	for(int i=1;i<=n;i++){
		while(h<=t&&a[i]>=a[q[t]])	t--;
		q[++t]=i;
		while(h<=t&&q[t]-q[h]>=k) h++;
		if(i>=k) printf("%d ",a[q[h]]);
	}
	return 0;
}