Pagini recente » Cod sursa (job #1121775) | Cod sursa (job #1963192) | Cod sursa (job #2539464) | Cod sursa (job #825541) | Cod sursa (job #2240731)
#include <bits/stdc++.h>
#define N 100010
using namespace std;
int n,m,a[N],rmq[N][17],lg[N],x,y,l,k;
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>a[i];
rmq[i][0]=a[i];
if(i) lg[i]=lg[i/2]+1;
}
for(int j=1;(1<<j)<n;j++)
{
for(int i=0;i<=n-(1<<j);i++)
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
}
for(;m;m--)
{
cin>>x>>y;
x--;y--;
l=y-x+1;
k=lg[l]-1;
cout<<min(rmq[x][k],rmq[y-(1<<(k))+1][k])<<'\n';
}
return 0;
}