记录编号 419566 评测结果 AAAAAAAAA
题目名称 [POJ 2823]滑动窗口 最终得分 100
用户昵称 GravatarHyoi_iostream 是否通过 通过
代码语言 C++ 运行时间 0.856 s
提交时间 2017-07-02 20:34:54 内存使用 12.11 MiB
显示代码纯文本
#include<iostream>  
#include<cstdio>  
#include<algorithm>  
using namespace std;  
const int maxn=1000010;  
const int INF=0x3f3f3f3f;  
int q[maxn],cnt;  
int a[maxn];   
int D[maxn],X[maxn];  
inline 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=0,t=0;  
    a[0]=-INF;  
    for(int i=1;i<=n;i++) {  
        while(h<=t&&a[q[t]]<=a[i]) t--;  
        q[++t]=i;  
        while(i-q[h]>=k) h++;  
        if(i>=k) D[++cnt]=a[q[h]];  
    }  
    h=0;t=0;cnt=0;  
    a[0]=INF;  
    for(int i=1;i<=n;i++) {  
        while(h<=t&&a[q[t]]>=a[i]) t--;  
        q[++t]=i;  
        while(i-q[h]>=k) h++;  
        if(i>=k) X[++cnt]=a[q[h]];  
    }  
    for(int i=1;i<=cnt;i++) printf("%d",X[i]);  
    printf("\n");  
    for(int i=1;i<=cnt;i++) printf("%d",D[i]);
	fclose(stdin);
	fclose(stdout);  
    return 0; 
} 
int work=Main();
int main(){;}