第三题的: #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; }
点赞 评论

相关推荐

07-23 11:37
延安大学 C++
绷不住了,晚上十点发拒信,是还在加班吗这样一想挂了好像也没什么不好
码农索隆:这个都是真人发嘛,会用到机器人定时发嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 22:48
牛马人的牛马人生:建议就是把北邮几个字放大就行了。北邮本硕按理来说完全不用担心啊
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务