https://www.luogu.org/problem/P1816
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#define LL long long
using namespace std;
const int MN=400005,inf=1000000000;
int n,q,jl[MN],b[MN],x,y;
void build(int u,int l,int r){
if(l==r) {b[u]=jl[l];return;}
int mid=(l+r)>>1;
build(u*2,l,mid);build(u*2+1,mid+1,r);
b[u]=min(b[u*2],b[u*2+1]);
}
int ask(int u,int l,int r){
//printf("%d %d\n",l,r);
if(r<x || l>y) return inf;
if(l>=x && r<=y) return b[u];
int mid=(l+r)>>1;int kl=inf;
if(mid>=x) kl=min(kl,ask(u*2,l,mid));
if(mid<=y) kl=min(kl,ask(u*2+1,mid+1,r));
return kl;
}
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) scanf("%d",&jl[i]);
build(1,1,n);
for(int i=1;i<=q;i++){
scanf("%d%d",&x,&y);
printf("%d ",ask(1,1,n));
}
return 0;
}