Pagini recente » Cod sursa (job #2291859) | Cod sursa (job #475522) | Cod sursa (job #2178215) | Cod sursa (job #1876559) | Cod sursa (job #2176195)
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
int n, m, rmq[20][100005], lg[100005], a, b;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int main ()
{
f>>n>>m;
for ( int i = 1; i <= n ; i++ )
{
f>>rmq[1][i];
}
for ( int i = 2 ; i <= 100003; i++ )
{
lg[i] = lg[i/2] + 1;
}
for( int i = 2; i <= lg[n] ; i++ )
{
for ( int j = 1 ; j <= n - ( 1 << (i-1) ) + 1 ; j++ )
{
rmq[i][j] = min ( rmq[i-1][j] , rmq[i-1][ j + ( 1<<(i-1) ) ] );
}
}
for ( int i = 1 ; i <= m ; i++ )
{
f>>a>>b;
int l = lg[b-a+1];
int p = 1<<( l-1 );
g<<min( rmq[ l ][ a ] , rmq[ l ][ b - p + 1 ] )<<'\n';
}
}