Pagini recente » Cod sursa (job #1514279) | Cod sursa (job #2355413) | Profil Oana2001 | Monitorul de evaluare | Cod sursa (job #1664866)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX=100002;
int n ,m;
int mat[NMAX][20];
int lg2[NMAX];
int main()
{
freopen("rmq.in","r", stdin);
freopen("rmq.out","w",stdout);
int a,b,k,l;
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
scanf("%d",&mat[i][0]);
lg2[1]=0;
for(int i=2; i<=n; i++)
lg2[i]=lg2[i/2]+1;
for(int i=1; i<=n; i++)
for(int j=1; (1<<j)<=i; j++)
{
k=i-(1<<(j-1));
mat[i][j]=min(mat[i][j-1],mat[k][j-1]);
}
for(int i=1; i<=m; i++)
{
scanf("%d%d", &a,&b);
l=lg2[b-a+1];
printf("%d\n",min(mat[b][l],mat[a+(1<<l)-1][l]));
}
return 0;
}