Pagini recente » Cod sursa (job #1209574) | Cod sursa (job #2925733) | Cod sursa (job #403200) | Cod sursa (job #46833) | Cod sursa (job #2176139)
#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[0][i];
}
for ( int i = 2 ; i <= n; i++ )
{
lg[i] = lg[i/2] + 1;
}
for( int i = 1; i <= lg[n] ; i++ )
{
for ( int j = 1 ; j <= n - ( 1 << (i-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;
g<<min( rmq[ lg[ b-a + 1 ] ][ a ] , rmq[ lg[ b-a + 1 ] ][ b - (1<<(lg[ b-a + 1 ]-1) ) ] )<<'\n';
}
}