Pagini recente » Cod sursa (job #187374) | Cod sursa (job #3189867) | Cod sursa (job #1513224) | Cod sursa (job #277325) | Cod sursa (job #2510742)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n,q,a[100001];
int rmq[20][100001];
int main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
rmq[1][i]=a[i];
for(int r=2,k=2;k<=n;r++,k*=2)
for(int i=1;i<=n-k+1;i++)
rmq[r][i]=min(rmq[r-1][i],rmq[r-1][i+k/2]);
for(int a,b,k=1;k<=q;k++)
{
cin>>a>>b;
int m=pow( 2 , (int)log2(b-a+1) );
int r=(int)log2(b-a+1)+1;
cout<<min( rmq[r][a] , rmq[r][b-m+1] )<<'\n';
}
return 0;
}