Pagini recente » Cod sursa (job #3308680) | Cod sursa (job #1844697) | Cod sursa (job #960377) | Cod sursa (job #396649) | Cod sursa (job #3348432)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in") ;
ofstream fout ("rmq.out") ;
int r[101][100001] ;
int e[100001] ;
void solve ()
{
int n , q ;
fin >> n >> q ;
for ( int i = 1 ; i <= n ; i ++ )
fin >> r[0][i] ;
for ( int i = 2 ; i <= n ; i ++ )
e[i] = 1 + e[i/2] ;
for ( int i = 1 ; i <= e[n] ; i ++ )
for ( int j = 1 ; j <= n - ( 1 << i ) + 1 ; j ++ )
r[i][j] = min ( r[i-1][j] , r[i-1][ j + ( 1 << ( i - 1 ) ) ] ) ;
while ( q )
{
int st , dr ;
fin >> st >> dr ;
int len = e[dr-st] ;
fout << min ( r[len][st] , r[len][dr-(1<<len)+1] ) ;
fout << '\n' ;
q -- ;
}
}
int main()
{
solve () ;
return 0;
}