Pagini recente » Rating Bogdan Guna (bgguna) | Cod sursa (job #2090156) | Cod sursa (job #3258869) | Cod sursa (job #1886774) | Cod sursa (job #2169013)
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, a, b, x, Arb[200100];
int main ()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d%d", &n, &m);
for (int i=1; i<=n; i++)
scanf("%d", &Arb[i+n]);
for (int i=n-1; i>0; i--)
Arb[i]=min(Arb[2*i], Arb[2*i+1]);
for (int i=1; i<=m; i++){
scanf("%d%d", &a, &b);
a+=n;
b+=n;
x=999999999;
while (a<=b){
x=min(x, min(Arb[a], Arb[b]));
a=(a+1)/2;
b=(b-1)/2;
}
printf("%d\n", x);
}
return 0;
}