Pagini recente » Cod sursa (job #2736480) | Cod sursa (job #2572997) | Cod sursa (job #1636550) | Cod sursa (job #1859591) | Cod sursa (job #986953)
Cod sursa(job #986953)
#include <cstdio>
#include <algorithm>
using namespace std;
#define max_n 100005
int RMK[20][max_n];
int n,m,a,b,i,l,d;
int main(){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d", &n, &m );
for ( i=1; i<=n; ++i ){
scanf("%d", &a );
RMK[i][0]=a;
}
for( l=1; (1<<l) <= n; ++l ){
for ( i=1; i+(1<<l)-1 <= n; ++i ){
RMK[i][l]=min( RMK[i][l-1], RMK[ i+(1<<(l-1)) ][l-1] );
}
}
for( ; m; --m ){
scanf("%d %d", &a, &b );
d = b-a+1;
i=0;
while( (1<<i) <= d )
++i;
--i;
printf("%d\n", min( RMK[ a ][ i ], RMK[ b-(1<<i)+1 ][ i ] ) );
}
return 0;
}