Pagini recente » Cod sursa (job #1446177) | Cod sursa (job #792821) | Cod sursa (job #2269502) | Cod sursa (job #2904063) | Cod sursa (job #2787969)
#include<fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int rmq[100002][22],n,q;
int main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>rmq[i][0];
for(int lg=2,exp=1;lg<=n;lg*=2,exp++)
for(int i=1;i+lg-1<=n;i++)
rmq[i][exp]=min(rmq[i][exp-1],rmq[i+lg/2][exp-1]);
for(int k=1;k<=q;k++)
{
int x,y;
cin>>x>>y;
if(x>y)
swap(x,y);
int lg=y-x+1;
int p=1;
int exp=0;
while(p<=lg)
{
p*=2;
exp++;
}
p/=2;
exp--;
cout<<min(rmq[x][exp],rmq[y-p+1][exp])<<'\n';
}
}