记录编号 549809 评测结果 AAAAAAAAA
题目名称 [POJ 2823]滑动窗口 最终得分 100
用户昵称 Gravatar夜莺 是否通过 通过
代码语言 C++ 运行时间 0.490 s
提交时间 2020-02-24 10:54:23 内存使用 10.56 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=1000000;
int dui[MAXN];
int MAX[MAXN],MIN[MAXN];
int n,k;
int t,w,num;
void Find_max(){
	MAX[num]=dui[t+1];
		for(int i=t+2;i<=w;i++)
			MAX[num]=max(MAX[num],dui[i]);
}
void Find_min(){
	MIN[num]=dui[t+1];
		for(int i=t+2;i<=w;i++)
			MIN[num]=min(MIN[num],dui[i]);
}
void var(){
	Find_min();
	Find_max();
	num++;
	t++;
	for(w=k;w<n;w++,num++,t++){
		if(MIN[num-1]!=dui[t])
			MIN[num]=min(MIN[num-1],dui[w]);
		else Find_min();
		if(MAX[num-1]!=dui[t])
			MAX[num]=max(MAX[num-1],dui[w]);
		else Find_max();
	}
}
int Main(){
	freopen("window.in","r",stdin);
	freopen("window.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=0;i<n;i++)
		scanf("%d",&dui[i]);
	t=-1;
	w=k-1;
	var();
	for(int i=0;i<=n-k;i++)
		printf("%d ",MIN[i]);
	printf("\n");
	for(int i=0;i<=n-k;i++)
		printf("%d ",MAX[i]);
	return 0;
}
int uu=Main();
int main(){;}