Pagini recente » Cod sursa (job #1831852) | Cod sursa (job #2371418) | Cod sursa (job #2960600) | Cod sursa (job #3206537) | Cod sursa (job #2751300)
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int n, m, i, j, a, b;
ifstream fin ( "rmq.in" );
ofstream fout ( "rmq.out" );
int logg2[100001], r[100001][17];
fin >> n >> m;
for( i = 1; i <= n; i++ ) {
fin >> 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++ ) {
fin >> a >> b;
j = logg2[b - a + 1] - 1;
fout << min ( r[a + ( 1 << j ) - 1][j], r[b][j] ) << endl;
}
return 0;
}