I Hate It

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 57498    Accepted Submission(s): 22449

Problem Description
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。

不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

 
Input
本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。
学生ID编号分别从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。
接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。
当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。
当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。
 
Output
对于每一次询问操作,在一行里面输出最高成绩。
 
Sample Input
5 6
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 2 9
Q 1 5
 
Sample Output
5
6
5
9
 
Hint

Huge input,the C function scanf() will work better than cin

 
 #include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=;
int t[maxn<<],n,m;
void Build(int node,int l,int r)
{
if(l==r){
scanf("%d",&t[node]);
return;
}
int mid=(l+r)>>;
Build(node<<,l,mid);
Build(node<<|,mid+,r);
t[node]=max(t[node<<],t[node<<|]);
} void Change(int node,int l,int r,int to,int v)
{
if(l==r){
t[node]=v;
return;
}
int mid=(l+r)>>;
if(mid>=to)Change(node<<,l,mid,to,v);
else Change(node<<|,mid+,r,to,v);
t[node]=max(t[node<<],t[node<<|]);
return;
} int Query(int node,int l,int r,int a,int b)
{
if(l>=a&&r<=b)
return t[node];
int mid=(l+r)>>,ret=;
if(mid>=a)
ret=Query(node<<,l,mid,a,b);
if(mid<b)
ret=max(ret,Query(node<<|,mid+,r,a,b));
return ret;
} int main()
{
int a,b;char s[];
while(~scanf("%d%d",&n,&m)){
Build(,,n);
for(int i=;i<=m;i++){ scanf("%s",s);
scanf("%d%d",&a,&b);
if(s[]=='U')
Change(,,n,a,b);
else
printf("%d\n",Query(,,n,a,b));
}
}
}

最新文章

  1. [翻译]利用顶点位移的VR畸变校正
  2. 来抢你们IT狗的饭碗了
  3. pycharm 4.5在debian下安装
  4. ActionBarSherlock的使用——(一)配置
  5. openstack(liberty): devstack之screen
  6. 原密码忘了,重置MAC开机密码
  7. ios uitableviewcell动态计算高度
  8. IDFA问题,苹果上传问题。improper Advertising identifier [IDFA] Usage.
  9. C++中模板使用详解
  10. [Attila GPU] ATTILA GPU Streamer Unit (D3D Input Assambler) 结构分析
  11. java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)
  12. 使用4K分辨率,然后放大DIP200%,软件界面异常.
  13. ajax入门学习
  14. Ajax+Struts2用户注册功能实现
  15. windows/browser ----&gt; cmd命令/powershell命令/chrome插件vimuim命令
  16. POJ3104--Drying(Binary Search)
  17. Spring Cloud Dalston.SR5 BUG一记
  18. STL标准库-Tuple
  19. 2018.07.22 bzoj3613: [Heoi2014]南园满地堆轻絮(逆序对结论题)
  20. linux loop device介绍

热门文章

  1. 剑指offer: 38 数字在排序数组中出现的次数
  2. 使用strut2要注意的问题
  3. asp.net利用ajax和jquery-ui实现进度条
  4. 基于事件的异步模式——BackgroundWorker
  5. 自定义Window 服务
  6. 将list&lt;对象&gt;转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
  7. HashMap HashTable HashSet
  8. OpenSSL安装及目录介绍
  9. Swift中的dispatch_once 单例模式
  10. Servlet监听器类型