Pagini recente » Cod sursa (job #1126026) | Cod sursa (job #1218172) | Cod sursa (job #648481) | Cod sursa (job #1162025) | Cod sursa (job #2369251)
#include <fstream>
#define MAXN 100000
using namespace std;
ifstream cin( "rmq.in" );
ofstream cout( "rmq.out" );
int rmq[MAXN+5][20]; // rmq[i][j] = minimul din intervalul (i,i+2^j-1)
int log2[MAXN+5];
int main()
{
int n, m;
cin>>n>>m;
for( int i=1;i<=n;i++ )
cin>>rmq[i][0];
for( int i=2;i<=n;i++ )
log2[i]=log2[i/2]+1;
for( int j=1;(1<<j)<=n;j++ )
for( int i=1;i<=n-(1<<j)+1;i++ )
{
int l=(1<<(j-1));
rmq[i][j]=min(rmq[i][j-1],rmq[i+l][j-1]);
}
while( m-- )
{
int x, y;
cin>>x>>y;
int l=log2[y-x+1];
cout<<min(rmq[x][l],rmq[y-(1<<l)+1][l])<<"\n";
}
return 0;
}