st表

来源:互联网 发布:长远汽配软件视频教程 编辑:程序博客网 时间:2024/04/28 07:09
#include<cstdio>#include<algorithm>#include<cstring>#define maxn 100005#define dep 17using namespace std;int n,m,lg[maxn],st[dep][maxn];int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&st[0][i]);for(int j=1;j<dep;j++)for(int i=1;i<=n;i++){st[j][i]=st[j-1][i];if(i+(1<<j-1)<=n && st[j-1][i+(1<<j-1)]>st[j][i])st[j][i]=st[j-1][i+(1<<j-1)];}int tmp=1;for(int i=0;i<dep;i++,tmp<<=1)lg[tmp]=i;tmp=0;for(int i=1;i<=n;i++){tmp=max(lg[i],tmp);lg[i]=tmp;}int l,r;for(int i=1;i<=m;i++){scanf("%d%d",&l,&r);tmp=lg[r-l+1];printf("%d\n",max(st[tmp][l],st[tmp][r-(1<<tmp)+1]));}}

原创粉丝点击