Alear @ 2019-02-11 21:55:26
#include<bits/stdc++.h>
using namespace std;
int st[1000010][15],st2[1000010][15],n,k,p[20];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
scanf("%d",&st[i][0]);
st2[i][0]=st[i][0];
}
p[0]=1;
for(int i=1;i<20;i++){
p[i]=p[i-1]*2;
}
int max_log=log(n)/log(2);
for(int j=1;j<=max_log;j++)
for(int i=1;i<=n-p[j]+1;i++)
st[i][j]=max(st[i][j-1],st[i+p[j-1]][j-1]);
for(int j=1;j<=max_log;j++)
for(int i=1;i<=n-p[j]+1;i++)
st2[i][j]=min(st2[i][j-1],st2[i+p[j-1]][j-1]);
int t=log(k)/log(2);
for(int i=1;i<=n-k+1;i++){
printf("%d ",min(st2[i][t],st2[i+k-p[t]][t]));
}
putchar('\n');
for(int i=1;i<=n-k+1;i++){
printf("%d ",max(st[i][t],st[i+k-p[t]][t]));
}
putchar('\n');
}
by Alear @ 2019-02-13 20:46:49
程序也有经过大量随机数据对拍了,可是就是不能过第二个点