Pagini recente » Cod sursa (job #446034) | Cod sursa (job #2379120) | Cod sursa (job #1980947) | Cod sursa (job #2799615) | Cod sursa (job #3222420)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int precompute[100005][18];
void solve() {
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> precompute[i][1];
for(int k = 1; k < 19; k++) {
for(int i = 1; i <= n-(1<<k)+1; i++) {
precompute[i][1<<k] = min(precompute[i][1<<(k-1)], precompute[i+(1<<(k-1))][1<<(k-1)]);
}
}
while(m--) {
int x, y;
cin >> x >> y;
if(x == y) {
cout << precompute[x][1] << '\n';
continue;
}
int p = 0;
while((1<<p) < y-x+1) p++;
p--;
cout << min(precompute[x][1<<p], precompute[y-(1<<p)+1][1<<p]) << '\n';
}
}
int main() {
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
//ios_base::sync_with_stdio(0);
//cin.tie(0);
int t=1;
//cin >> t;
while(t--) solve();
}