Pagini recente » Cod sursa (job #2885369) | Cod sursa (job #823192) | Cod sursa (job #1992001) | Cod sursa (job #1848935) | Cod sursa (job #1231776)
# include <bits/stdc++.h>
# define nmax 100005
# define lgmax 18
using namespace std;
int S[lgmax][nmax];
int Lg[nmax];
void open()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
}
int read()
{
char c[8];
scanf("%s",&c);
int p(0),i(0);
while (c[i]) p=p*10+c[i]-'0',++i;
return p;
}
int main(void)
{
open();
int n=read(),m=read();
Lg[1]=0;
for (int i = 2;i <= n; ++ i) Lg[i]=Lg[i/2]+1;
for (int i = 1;i <= n; ++ i) S[0][i]=read();
int x,y,p;
for (int i = 1; i <= Lg[n] ;++ i )
for (int j = 1 , p = n-(1<<i)+1; j<=p;++ j)
S[i][j]=min(S[i-1][j],S[i-1][j+(1<<(i-1))]);
while (m--) x=read(),y=read(),p=y-x+1,printf("%d\n",min(S[Lg[p]][x],S[Lg[p]][y+1-(1<<Lg[p])]));
return 0;
}