Pagini recente » Cod sursa (job #827392) | Cod sursa (job #1890071) | Cod sursa (job #665732) | Cod sursa (job #3204083) | Cod sursa (job #2751302)
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int n, m, i, j, a, b;
int logg2[100001], r[100001][17];
ifstream fin ( "rmq.in" );
ofstream fout ( "rmq.out" );
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;
}
}