HOJ 2690 Nail II

来源:互联网 发布:人种与长相 知乎 编辑:程序博客网 时间:2024/06/05 21:55

区间查询最大值。用线段树维护区间最大值。

#include <cstdio>#include <algorithm>using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 222222;int MAX[maxn<<2];void PushUP(int rt){       MAX[rt] = max(MAX[rt<<1] , MAX[rt<<1|1]);}void build(int l,int r,int rt){       if (l == r)       {              scanf("%d",&MAX[rt]);              return ;       }       int m = (l + r) >> 1;       build(lson);       build(rson);       PushUP(rt);}int query(int L,int R,int l,int r,int rt) {       if (L <= l && r <= R)        {              return MAX[rt];       }       int m = (l + r) >> 1;       int ret = 0;       if (L <= m) ret = max(ret , query(L , R , lson));       if (R > m) ret = max(ret , query(L , R , rson));       return ret;}int main(){       int n , m;       while (~scanf("%d%d",&n,&m))        {              build(1 , n , 1);              while (m --)              {                     int a , b;                     scanf("%d%d",&a,&b);                     printf("%d\n",query(a , b , 1 , n , 1));              }       }       return 0;}
0 0
原创粉丝点击