poj2823(ST)

来源:互联网 发布:新剑侠情缘mac下载 编辑:程序博客网 时间:2024/05/16 18:58
#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#define For(i,j,k) for(i=j;i<=k;++i)int a[1000020],d[1000020],n,k,d1[1000020],i,j,lo;int min(int a,int b){if (a<b) return a; else return b;}int max(int a,int b){if (a>b) return a; else return b;}void build(){For(i,1,n) d[i]=a[i];For(j,1,lo)for(i=1;i+(1<<j)-1<=n;++i)d[i]=min(d[i],d[i+(1<<(j-1))]);}void build1(){For(i,1,n) d[i]=a[i];For(j,1,lo)for(i=1;i+(1<<j)-1<=n;++i)d[i]=max(d[i],d[i+(1<<(j-1))]);}int query(int l,int r){return min(d[l],d[r-(1<<lo)+1]);}int query1(int l,int r){return max(d[l],d[r-(1<<lo)+1]);}int main(){int i;scanf("%d%d",&n,&k);lo=0;while (1<<(lo+1)<=k) ++lo;For(i,1,n) scanf("%d",&a[i]);build();For(i,1,n-k) {printf("%d ",query(i,i+k-1));}printf("%d\n",query(i,i+k-1));build1();For(i,1,n-k) {printf("%d ",query1(i,i+k-1));}printf("%d\n",query1(i,i+k-1));return 0;}

1 0
原创粉丝点击