Pagini recente » Cod sursa (job #3237346) | Cod sursa (job #1604410) | Cod sursa (job #2939554) | Cod sursa (job #2587319) | Cod sursa (job #1357814)
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n,m,a[100001][17],l[100001],p=1,q,r;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n,&m);
l[1]=0;
for(int i=2; i<=n; i++)
l[i]=l[i/2]+1;
for(int i=1; i<=n; i++)
scanf("%d",&a[i][0]);
for(int i=1; i<=l[n];i++)
{
p*=2;
for (int j=1; j<=n-p+1 ;j++)
a[j][i]=min(a[j][i-1],a[j+p/2][i-1]);
}
for (int i=1; i<=m; i++)
{
scanf("%d %d",&q,&r);
p=pow(2,l[r-q+1]);
printf("%d\n",min(a[q][l[r-q+1]],a[r-p+1][l[r-q+1]]));
}
return 0;
}