Pagini recente » Cod sursa (job #823646) | Cod sursa (job #1486317) | Cod sursa (job #1773401) | Cod sursa (job #2840952) | Cod sursa (job #1427866)
#include<stdio.h>
#define NMAX 100001
#define KMAX 20
int n , q , v[NMAX] , rmq[NMAX][KMAX],log[NMAX];
int min(int a , int b){
if(a < b)return a;
return b;
}
int main()
{
int a , b;
freopen("rmq.in" , "r" , stdin );
freopen("rmq.out" , "w" , stdout );
scanf("%d%d" , &n , &q);
for(int i = 1 ; i <= n ; ++i )
scanf("%d" , &v[i]) ;
for(int i = 1 ; i <= n ; ++i )
rmq[i][0] = v[i];
for(int k = 1 ; (1<<k) <= n ; ++k )
for(int i = 1 ; i+(1<<k)-1 <= n ; ++i )
rmq[i][k] = min(rmq[i][k-1],rmq[i+(1<<(k-1))][k-1]);
for(int i = 2 ; i <= n ; ++i )
log[i] = log[i/2]+1;
for(int i = 1 ; i <= q; ++i ){
scanf("%d%d" , &a , &b );
int k = log[b-a];
printf("%d\n" , min(rmq[a][k],rmq[b-(1<<k)+1][k]));
}
return 0;
}