Pagini recente » Cod sursa (job #2520496) | Cod sursa (job #1895821) | Cod sursa (job #2965146) | Cod sursa (job #1964852) | Cod sursa (job #1760910)
#include <iostream>
#include <cstdio>
using namespace std;
int r[100001][17];
int log[100000];
int v[100000];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n,m,i,j,a,b;
scanf("%d %d",&n,&m);
log[1]=0;
for(i=2;i<=n;i++)
log[i]=1+log[i/2];
for(i=1;i<=n;i++)scanf("%d",&v[i]);
for(i=1;i<=n;i++){
r[i][0]=v[i];
for(j=1;(1<<j)<=i;j++)
r[i][j]=min(r[i-(1<<(j-1))][j-1],r[i][j-1]);
}
for(i=1;i<=m;i++){
scanf("%d %d",&a,&b);
int q,l;
l=log[b-a+1];
q=min(r[a+(1<<l)-1][l],r[b][l]);
printf("%d\n",q);
}
return 0;
}