关注
第三题的:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,M=20;
int n,m;
int a[N];
int maxf[N][M];
int minf[N][M];
int querymax(int l,int r)
{
int len=r-l+1;
int k=(log(len)/log(2));
return max(maxf[l][k],maxf[r-(1<<k)+1][k]);
}
int querymin(int l,int r)
{
int len=r-l+1;
int k=(log(len)/log(2));
return min(minf[l][k],minf[r-(1<<k)+1][k]);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int j=0;j<M;j++){
for(int i=1;i+(1<<j)-1<=n;i++) {
if(j==0) maxf[i][j]=a[i];
else{
maxf[i][j]=max(maxf[i][j-1],maxf[i+(1<<(j-1))][j-1]);
}
}
}
for(int j=0;j<M;j++){
for(int i=1;i+(1<<j)-1<=n;i++) {
if(j==0) minf[i][j]=a[i];
else{
minf[i][j]=min(minf[i][j-1],minf[i+(1<<(j-1))][j-1]);
}
}
}
while(m--){
int x,y;cin>>x>>y;
cout<<querymax(x,y)-querymin(x,y)<<endl;
}
return 0;
}
查看原帖
点赞 评论
相关推荐


点赞 评论 收藏
分享
牛马人的牛马人生:建议就是把北邮几个字放大就行了。北邮本硕按理来说完全不用担心啊
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 工作中哪个瞬间让你想离职 #
28552次浏览 200人参与
# 在职场上,你最讨厌什么样的同事 #
16496次浏览 168人参与
# 选了这个offer,你有没有后悔? #
593236次浏览 4031人参与
# 机械人,秋招第一次笔试的企业是哪家? #
41211次浏览 327人参与
# 小米硬件提前批进度交流 #
171192次浏览 1528人参与
# 机械求职避坑tips #
53532次浏览 381人参与
# 哪些公司校招卡第一学历 #
76004次浏览 314人参与
# 担心入职之后被发现很菜怎么办 #
139856次浏览 810人参与
# 入职以后才知道的校招谎言 #
89124次浏览 588人参与
# 职场常用语录大全 #
4256次浏览 32人参与
# Offer比较,你最看重什么? #
192255次浏览 1310人参与
# 华子oc时间线 #
1245202次浏览 6487人参与
# 哪些公司开提前批了? #
30492次浏览 278人参与
# 风评不好的公司,你会去吗? #
66444次浏览 468人参与
# 两会劳动法放大招 #
76735次浏览 692人参与
# 应届生初入职场,求建议 #
230442次浏览 2651人参与
# 实习如何「偷」产出? #
57350次浏览 1408人参与
# 不卡学历的大厂有哪些? #
33747次浏览 262人参与
# 怎么防止在试用期被辞退 #
129247次浏览 927人参与
# 校招阶段,学历VS技术哪个更重要? #
20047次浏览 210人参与