【模板】ST表
#include<bits/stdc++.h>
#define MAX 30002
using namespace std;
int n,m,ST[MAX][20];
void work()
{
for(int j=1;1<<j<=n;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
ST[i][j]=min(ST[i][j-1],ST[i+(1<<j-1)][j-1]);
}
int query(int l,int r)
{
int x=int(log(r-l+1)/log(2));
return min(ST[l][x],ST[r-(1<<x)+1][x]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&ST[i][0]);
work();//Do not forget!
int x1,x2;
while(m--)
{
scanf("%d%d",&x1,&x2);
printf("%d\n",query(x1,x2));
}
return 0;
}