Pagini recente » Cod sursa (job #439683) | Cod sursa (job #2948904) | Cod sursa (job #434778) | Cod sursa (job #3166613) | Cod sursa (job #2748606)
#include <fstream>
using namespace std;
ifstream cin ( "rmq.in" );
ofstream cout ( "rmq.out" );
#define NMAX 100000
#define MAXLOG 17
int logg2[NMAX + 1], r[NMAX + 1][MAXLOG];
int main() {
int n, m, i, j, a, b;
cin >> n >> m;
for ( i = 1; i <= n; i++ ) {
cin >> r[i][0];
}
for ( i = 1; i <= n; i++ ) {
logg2[i] = logg2[i / 2] + 1;
}
for ( j = 1; j <= logg2[n]; j++ ) {
for ( i = ( 1 << ( j - 1 ) ) + 1; i <= n; i++ ) {
r[i][j] = min ( r[i - ( 1 << ( j - 1 ) )][j - 1], r[i][j - 1] );
}
}
for ( i = 1; i <= m; i++ ) {
cin >> a >> b;
j = logg2[b - a + 1] - 1;
cout << min ( r[a + ( 1 << j )][j], r[b][j] ) << "\n";
}
return 0;
}