Pagini recente » Cod sursa (job #2583750) | Cod sursa (job #2226973) | Cod sursa (job #1560841) | Cod sursa (job #1121063) | Cod sursa (job #175534)
Cod sursa(job #175534)
#include <stdio.h>
#define NX ( 1<<17 )
#define LX 17
int N, M, a[ LX ][ NX ], v[ NX ];
int i, j, k, x, y;
void cit() {
scanf( "%d%d", &N, &M );
for( i = 1; i <= N; i++ )
scanf( "%d", v+i );
for( i = 1; i <= N; i++ )
a[0][i] = i;
for( j = 1, k = 2; k <= N; j++, k <<= 1 )
for( i = 1; i+k <= N+1; i++ )
a[j][i] = ( v[ a[j-1][i] ] < v[ a[j-1][ i + (k>>1) ] ] ) ? a[j-1][i] : a[j-1][ i + (k>>1) ];
while( M-- ) {
scanf( "%d%d", &x, &y );
for( k = 1; (1<<k) < y - x + 1; k++ ); k--;
printf( "%d\n", v[ a[k][x] ] < v[ a[k][y-(1<<k)+1] ] ? v[ a[k][x] ] : v[ a[k][y-(1<<k)+1] ] );
}
}
int main() {
freopen( "rmq.in", "r", stdin );
freopen( "rmq.out", "w", stdout );
cit();
return 0;
}