Pagini recente » Cod sursa (job #160153) | Cod sursa (job #1738543) | Cod sursa (job #2285132) | Cod sursa (job #1666340) | Cod sursa (job #2175963)
#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 ] ][ a ] , rmq[ lg[ b-a ] ][ b - lg[ b-a ] ] )<<'\n';
}
}