思路:水题,线段树的基本操作即可。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 50010
using namespace std;
int n,q;
struct nond{
int l,r,min,max;
}tree[MAXN*];
void up(int now){
tree[now].max=max(tree[now*].max,tree[now*+].max);
tree[now].min=min(tree[now*].min,tree[now*+].min);
return ;
}
void build(int now,int l,int r){
tree[now].l=l;tree[now].r=r;
if(tree[now].l==tree[now].r){
scanf("%d",&tree[now].max);
tree[now].min=tree[now].max;
return ;
}
int mid=(tree[now].l+tree[now].r)/;
build(now*,l,mid);
build(now*+,mid+,r);
up(now);
}
int querymax(int now,int l,int r){
if(tree[now].l==l&&tree[now].r==r)
return tree[now].max;
int mid=(tree[now].l+tree[now].r)/;
if(r<=mid) return querymax(now*,l,r);
else if(l>mid) return querymax(now*+,l,r);
else return max(querymax(now*,l,mid),querymax(now*+,mid+,r));
}
int querymin(int now,int l,int r){
if(tree[now].l==l&&tree[now].r==r)
return tree[now].min;
int mid=(tree[now].l+tree[now].r)/;
if(r<=mid) return querymin(now*,l,r);
else if(l>mid) return querymin(now*+,l,r);
else return min(querymin(now*,l,mid),querymin(now*+,mid+,r));
}
int main(){
scanf("%d%d",&n,&q);
build(,,n);
for(int i=;i<=q;i++){
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",querymax(,x,y)-querymin(,x,y));
}
}

最新文章

  1. Python常用方法
  2. codeforces 724
  3. sql注入在线检测(sqlmapapi)
  4. Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)
  5. 关于arcgis发布wfs问题
  6. c#面向对象机制的进一步理解
  7. PLINQ 简介
  8. Codeforces Round #226 (Div. 2)A. Bear and Raspberry
  9. Wall(Graham算法)
  10. MySQL存储过程详解 mysql 存储过程(二)
  11. myeclipse自动生成注释
  12. ftp服务器可以连接但不能传输数据(proftpd)
  13. Linux vi/vim编辑器常用命令与用法总结
  14. Dubbo2.6.5+Nacos注册中心(代替Zookeeper)
  15. 编写带有下列声明的例程:第一个例程是个驱动程序,它调用第二个例程并显示String str中的字符的所有排列。例如,str是&quot;abc&quot;, 那么输出的串则是abc,acb,bac,bca,cab,cba,第二个例程使用递归。
  16. 苹果后门、微软垄断与Linux缺位
  17. TDD、BDD、DDD
  18. 微信小程序:WXSS 样式
  19. 【BioCode】根据seq与位点信息截取窗口
  20. java成神之——集合框架之队列,栈,集合并发

热门文章

  1. [AtCoder3954]Painting Machines
  2. c语言实现迪杰斯特拉算法(邻接表)
  3. Mysql数据库系列
  4. 证明,为什么HBase在创建表时,列簇是必须要,列可不要?
  5. Visual C++ 6.0的界面介绍
  6. 【Linux】ubuntu中怪异的vi编辑器
  7. C#的WebBrowser操作frame
  8. 【转】虚拟化(一):虚拟化及vmware产品介绍
  9. scrapy-redis让redis不止使用db0
  10. Django基础(二)