Pagini recente » Cod sursa (job #126186) | Cod sursa (job #2407457) | Cod sursa (job #2137413) | Cod sursa (job #2407454) | Cod sursa (job #2882342)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n;
int const N=100005;
int const J=log2(N)+3;
int a[N][J];
void build()
{
int power=1;
for(int j=1;j<=J;j++)
{
for(int i=1;i<=N;i++)
if(i+power<=n)
a[i][j]=min(a[i][j-1],a[i+power][j-1]);
else
break;
power*=2;
}
}
int main()
{
int q;
fin>>n>>q;
for(int i=1;i<=n;i++)
fin>>a[i][0];
build();
while(q--)
{
int x,y;
fin>>x>>y;
int val=log2(y-x+1);
fout<<min(a[x][val],a[y-val][val])<<'\n';
}
}