Pagini recente » Cod sursa (job #623440) | Istoria paginii runda/hehe/clasament | Cod sursa (job #1602277) | Cod sursa (job #1105808) | Cod sursa (job #2279187)
#include <iostream>
#include <cstdio>
using namespace std;
const int N=100000+5;
int v[N][19];
int lol[N];
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
for(int i=0;i<N;i++)
{
for(int j=0;j<19;j++)
{
v[i][j]=(1<<30);
}
}
int n,t;
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>v[i][0];
}
for(int k=1;k<19;k++)
{
for(int i=1;i+(1<<k)-1<=n;i++)
{
v[i][k]=min(v[i][k-1],v[i+(1<<(k-1))][k-1]);
}
}
for(int i=2;i<N;i++)
{
lol[i]=lol[i/2]+1;
}
for(int tc=1;tc<=t;tc++)
{
int st,dr;
cin>>st>>dr;
int lg=lol[dr-st+1];
cout<<min(v[st][lg],v[dr-(1<<lg)+1][lg])<<"\n";
}
return 0;
}