#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int size = ;
int maxx[size][],minn[size][];
int n;
void init()
{
int k = log2(n);
for(int j = ;j <= k;j ++)
{
for(int i = ;i <= n;i ++)
{
maxx[i][j] = max(maxx[i][j-],maxx[i+(<<j-)][j-]); //左边位运算优先级比较低,不用加括号
minn[i][j] = min(minn[i][j-],minn[i+(<<j-)][j-]); //这里[]内是[i+(1<<(j-1))],因为这个区间的另一部分是从上一部分末端开始。
}
}
} int find(int l,int r)
{
int k = log2(r-l+);
int maxans = max(maxx[l][k],maxx[r-(<<k)+][k]); //这两个区间可能有重复但是无关紧要,我要求的是最大和最小,就算重复也能求出最大和最小。
int minans = min(minn[l][k],minn[r-(<<k)+][k]); //同样,这个区间不会超过原区间的范围,因为分别从两个区间下手,考虑的最大化情况也是分别覆盖区间。
return (maxans - minans);
} int main()
{
memset(minn,,sizeof(minn));
int q; scanf("%d%d",&n,&q);
for(int i = ;i <= n;i ++)
{
scanf("%d",&maxx[i][]);
minn[i][] = maxx[i][];
}
init();
for(int i = ;i <= q;i ++)
{
int a,b;
scanf("%d%d",&a,&b);
int ans = find(a,b);
printf("%d\n",ans);
}
return ;
}

最新文章

  1. ERR_CONTENT_DECODING_FAILED错误的原因和解决办法
  2. 使用Intellij IDEA搭建Ext JsMVC web项目
  3. 个人博客作业week2——代码复审
  4. Session一次错误记录
  5. 机器学习笔记----- ID3算法的python实战
  6. React Native 开发笔记
  7. 动手动脑final
  8. ios开发--animation flash动画
  9. 无法使用以下搜索标准找到 X.509 证书: StoreName“My”、StoreLocation“LocalMachine”、FindType“FindBySubjectName”、FindValue“MyWebSite”。
  10. list的三种遍历方法
  11. win10安装sqlserver2016准备
  12. 数据库索引------B-Tree 索引和 Hash 索引的对比
  13. 算法8 五大查找之:二叉排序树(BSTree)
  14. 阿里云ECS相关
  15. Zabbix触发器支持的函数说明
  16. check camera and driver
  17. Python需要知道的知识点
  18. hive与hbase的联系与区别
  19. python 类 __module__ __class__
  20. PokeCats开发者日志(十)

热门文章

  1. 运行python manage.py 出现mportError: No module named django.core.management when using manage.py
  2. 03 vue项目结构
  3. Matlab中的eig函数和Opecv中eigen()函数的区别
  4. wms、wmts和wfs的区别
  5. 亚马逊s3存储: aws cli上传工具速度和各文件大小关系探究
  6. MariaDB(第三章)select
  7. 白盒测试笔记之:testng 单元测试
  8. filter_var()函数
  9. vue中 Vue.set 的使用
  10. weiphp记录