Pagini recente » Cod sursa (job #1914939) | Cod sursa (job #866796) | Cod sursa (job #2490565) | Cod sursa (job #2941808) | Cod sursa (job #2790871)
#include<fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n,q,rmq[100002][22];
int main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>rmq[i][0];
for(int lg=1,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][exp-1]);
for(int i=1;i<=q;i++)
{
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';
}
}