RMQ模板题 POJ 3264

来源:互联网 发布:淘宝商品如何推广 编辑:程序博客网 时间:2024/06/08 19:41
#include<cstdio>#include<iostream>#include<cmath>using namespace std;int n,m,temp2,emax[50001][19],emin[50001][19],k,l,r,maxx,minn,res;double temp;int main(){    scanf("%d%d",&n,&m);    for (int i=1;i<=n;i++)    {        scanf("%d",&temp2);        emax[i][0]=emin[i][0]=temp2;    }    temp=log(n)/log(2.0);    for (int j=1;j<=temp;j++)    {        for (int i=1;i<=n;i++)        {            if (i+(1<<j)-1<=n)            {                emax[i][j]=max(emax[i][j-1],emax[i+(1<<(j-1))][j-1]);                emin[i][j]=min(emin[i][j-1],emin[i+(1<<(j-1))][j-1]);            }        }    }    for (int i=1;i<=m;i++)    {        scanf("%d%d",&l,&r);        if (l>r)        {            swap(l,r);        }        k=log(r-l+1)/log(2);        maxx=max(emax[l][k],emax[r-(1<<k)+1][k]);        minn=min(emin[l][k],emin[r-(1<<k)+1][k]);        res=maxx-minn;        printf("%d\n",res);    }    return 0;}
0 0
原创粉丝点击