Pagini recente » Cod sursa (job #1722673) | Cod sursa (job #1965943) | Rating Manghiuc Alexandru (Alex62493) | Cod sursa (job #1737336) | Cod sursa (job #2789645)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int MAX_N = 100005;
const int LOG = 17;
int a[MAX_N];
int m[MAX_N][LOG];
int query(int L , int R){
int length = R - L + 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];
}
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]);
}
}
int q;
cin >> q;
int L , R;
for(int i = 0; i < q; i++){
cin >> L >> R;
cout << query(L , R) << "\n";
}
return 0;
}