Pagini recente » Cod sursa (job #2646505) | Cod sursa (job #2257354) | Cod sursa (job #2537810) | Cod sursa (job #2777021) | Cod sursa (job #2914037)
#include<fstream>
#define N_max 1000001
using namespace std;
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
int n,rmq[30][N_max],m;
int E[N_max];
int main()
{
cin>>n>>m;
for(int i=1; i<=n; i++) cin>>rmq[0][i];
for(int p=1; (1<<p)<=n; p++)
for(int i=1; i<=n; i++)
{
int aux=i+(1<<(p-1));
rmq[p][i]=rmq[p-1][i];
if(aux<=n && rmq[p-1][aux]<rmq[p][i]) rmq[p][i]=rmq[p-1][aux];
}
E[1]=0;
for(int i=2; i<=n; ++i) E[i]=E[i/2]+1;
while(m--)
{
int a,b;
cin>>a>>b;
int e=E[b-a+1];
int len=(1<<e);
cout<<min(rmq[e][a],rmq[e][b-len+1])<<'\n';
}
}