Pagini recente » Cod sursa (job #1760730) | Cod sursa (job #226330) | Cod sursa (job #698648) | Cod sursa (job #2141391) | Cod sursa (job #2336232)
#include <bits/stdc++.h>
using namespace std ;
const int NR = 100002 ;
ifstream in ("rmq.in") ;
ofstream out ("rmq.out") ;
int rmq [ 18 ][ NR ] , lg [ NR ] , i , j , n , m , x , y ;
int main ()
{
in >> n >> m ;
for ( i = 1 ; i <= n ; ++ i ) in >> rmq [ 0 ][ i ] ;
for ( i = 1 ; ( 1 << i ) <= n ; ++ i )
for ( j = 1 ; j + ( 1 << i ) <= n + 1 ; ++ j )
rmq [ i ][ j ] = min ( rmq [ i - 1 ][ j ] , rmq [ i - 1 ][ j + ( 1 << ( i - 1 ) ) ] ) ;
for ( i = 2 ; i <= n ; ++ i ) lg [ i ] = lg [ i >> 1 ] + 1 ;
for ( ; m -- ; )
{
in >> x >> y ;
if ( x > y ) swap ( x , y ) ;
out << min ( rmq [ lg [ y - x + 1 ] ][ x ] , rmq [ lg [ y - x + 1 ] ][ y - ( 1 << ( lg [ y - x + 1 ] ) ) + 1 ] ) << "\n" ;
}
}