#include
#include using namespace std;#define MAX 1000001
int A[MAX];
int Q[MAX];
int P[MAX];
int Min[MAX];
int Max[MAX];
int n,k;void get_min()
{int i;int head=1,tail=0;for(i=0; i1; i++) {while(head<=tail && Q[tail]>=A[i]) --tail;Q[++tail]=A[i];P[tail]=i;}for(; iwhile(head<=tail && Q[tail]>=A[i])--tail;Q[++tail]=A[i];P[tail]=i;while(P[head]1) {head++;}Min[i-k+1]=Q[head];}
}void get_max()
{int i;int head=1,tail=0;for(i=0; i1; i++){while(head<=tail && Q[tail]<=A[i]) --tail;Q[++tail]=A[i];P[tail]=i;}for(; iwhile(head<=tail && Q[tail]<=A[i]) --tail;Q[++tail]=A[i];P[tail]=i;while(P[head]1){head++;}Max[i-k+1]=Q[head];}
}void output()
{int i; for(i=0; i1; i++){if(i==0)printf("%d",Min[i]);elseprintf(" %d",Min[i]);}printf("\n");for(i=0; i1; i++){if(i==0)printf("%d",Max[i]);elseprintf(" %d",Max[i]);}printf("\n");
}int main()
{int i;freopen("acm.txt","r",stdin);scanf("%d%d",&n,&k);for(i=0; iscanf("%d",&A[i]);}get_min();get_max();output();return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!