Pagini recente » Cod sursa (job #1455848) | Cod sursa (job #1562898) | Cod sursa (job #3123348) | Cod sursa (job #1754196) | Cod sursa (job #1650795)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[20][100010],i,j,n,m,k,lg[100010],x,y;
int main()
{
for( i = 2 ; i <= 100000 ; i++ )
lg[ i ] = lg[ i / 2 ] + 1;
fin>>n>>m;
for( i = 1 ; i <= n ; i++ )
fin>>rmq[ 0 ][ i ];
for( j = 1 ; j <= lg[ n ] ; j++ )
for( i = 1 ; i <= n ; i++ )
rmq[ j ][ i ] = min( rmq[ j - 1 ][ i ] , rmq[ j - 1 ][ i + (1<<(j-1)) ] );
for( i = 1 ; i <= m ; i++ )
{
fin>>x>>y;
k = lg[ y - x ];
fout<<min( rmq[ k ][ x ] , rmq[ k ][ y - (1<<(k-1)) ] )<<'\n';
}
return 0;
}