Pagini recente » Cod sursa (job #797211) | Cod sursa (job #1363922) | Cod sursa (job #938701) | Cod sursa (job #1407487) | Cod sursa (job #175251)
Cod sursa(job #175251)
#include <stdio.h>
#define NX 100010
#define SQ 400
#define INF 0x3f3f3f3f
int N, M, v[ NX ], w[ SQ ], sq, i, k, x, y, min;
inline int MIN( int x, int y ) {
return x < y ? x : y;
}
void cit() {
scanf( "%d%d", &N, &M );
for( i = 0; i < N; i++ )
scanf( "%d", v + i );
for( sq = 1; sq*sq <= N; sq++ );
sq--;
for( i = k = 0, min = INF; i < N; i++ ) {
min = MIN( min, v[i] );
if( i % sq == sq-1 )
w[ k++ ] = min, min = INF;
}
while( M-- ) {
scanf( "%d%d", &x, &y );
x--, y--, min = INF;
for( i = x; i%sq != 0 && i <= y; i++ )
min = MIN( min, v[i] );
for( ; i+sq <= y+1; i += sq )
min = MIN( min, w[ i/sq ] );
for( ; i <= y; i++ )
min = MIN( min, v[i] );
printf( "%d\n", min );
}
}
int main() {
freopen( "rmq.in", "r", stdin );
freopen( "rmq.out", "w", stdout );
cit();
return 0;
}