hdu 1754

来源:互联网 发布:自己实现java虚拟机 编辑:程序博客网 时间:2024/06/03 20:50
#include<cstdio>#include<cstring>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))#define INF 0x3f3f3f3fusing namespace std;int t[200000<<2],d[200000<<2];void build(int l,int r,int rt){if(l==r){t[rt]=d[l];return ;}int m=(l+r)>>1;build(lson);build(rson);t[rt]=MAX(t[rt<<1],t[rt<<1|1]);}void update(int i,int v,int l,int r,int rt){if(i<l||i>r)return ;if(l==r){t[rt]=v;return ;}int m=(l+r)>>1;update(i,v,lson);update(i,v,rson);t[rt]=MAX(t[rt<<1],t[rt<<1|1]);return ;}int query(int a,int b,int l,int r,int rt){if(b<l||a>r)return 0;if(a<=l&&r<=b)return t[rt];int m=(l+r)>>1;int res1=query(a,b,lson);int res2=query(a,b,rson);return MAX(res1,res2);}int main(){int n,m;char str[10];while(~scanf("%d%d",&n,&m)){for(int i=1;i<=n;i++)scanf("%d",&d[i]);build(1,n,1);while(m--){int a,b;scanf("%s%d%d",str,&a,&b);if(str[0]=='Q')printf("%d\n",query(a,b,1,n,1));elseupdate(a,b,1,n,1);}   } } 

0 0
原创粉丝点击