Pagini recente » Cod sursa (job #2417873) | Cod sursa (job #722622) | Cod sursa (job #2984737) | Cod sursa (job #508100) | Cod sursa (job #2789609)
#include <iostream>
using namespace std;
const int MAX_N = 100'005;
const int LOG = 17;
int a[MAX_N];
int m[MAX_N][LOG];
int query(int L , int R){
int length = L - R + 1;
int k = 0;
while((1 << k + 1) <= length )
k++;
return min(m[L][k] , m[R - (1 <<k) + 1][k]);
}
int main() {
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
m[i][0] = a[i];
}
//procesare
for(int k = 1; k < LOG; k++){
for(int i = 0; i + (1 << k) - 1 <=n; i++){
m[i][k] = min(m[i][k - 1] , m[i + (1 << (k + 1))][k - 1]);
}
}
//raspundem la intrebari
int q;
cin >> q;
int L , R;
for(int i = 0; i < q; i++){
cin >> L >> R;
cout << query(L , R) << "\n";
}
return 0;
}