Pagini recente » Cod sursa (job #2714771) | Cod sursa (job #2099722) | Cod sursa (job #2785594) | Cod sursa (job #2220234) | Cod sursa (job #1891326)
#include <fstream>
using namespace std;
ofstream fout ("rmq.out");
ifstream fin ("rmq.in");
int v[ 20 ][ 100005 ],lg[ 100005 ],n,m,i,j,a,b,x;
int main()
{
fin>>n>>m;
for( i = 1 ; i <= n ; i++ )
{
fin>>v[ 0 ][ i ];
}
for( i = 2 ; i <= n ; i++ )
lg[ i ] = lg[ i / 2 ] + 1;
for( i = 1 ; i <= lg[ n ] ; i++ )
{
for( j = 1 ; j + ( 1 << i ) - 1 <= n ; j++ )
{
v[ i ][ j ] = min( v[ i - 1 ][ j ] , v[ i - 1 ][ j + ( 1 << ( i - 1 ) )]);
}
}
for( i = 1 ; i <= m ; i++ )
{
fin>>a>>b;
x = lg[ b - a + 1 ];
fout<<min( v[ x ][ a ] ,v[ x ][ b - ( 1 << x ) + 1 ] )<<'\n';
}
fin.close();
fout.close();
return 0;
}