Pagini recente » Cod sursa (job #2906552) | Cod sursa (job #2745917) | Cod sursa (job #2209138) | Cod sursa (job #1142341) | Cod sursa (job #2176206)
#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;
}
int d = 2;
for( int i = 2; i <= lg[n] ; i++ )
{
for ( int j = 1 ; j <= n - d + 1 ; j++ )
{
rmq[i][j] = min ( rmq[i-1][j] , rmq[i-1][ j + ( d/2 ) ] );
}
d*=2;
}
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';
}
}