Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Rezultatele filtrării | Borderou de evaluare (job #3216992) | Cod sursa (job #2132687)
#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;
}