Pagini recente » Cod sursa (job #227347) | Cod sursa (job #3347281) | Cod sursa (job #293270) | Cod sursa (job #2070144) | Cod sursa (job #3318345)
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
const int LOG=22;
int rmq[maxn][LOG];
int query(int l,int r) {
int lung=(r-l+1);
int logg=log2(lung);
return min(rmq[l][logg],rmq[r-(1<<logg)+1][logg]);
}
signed main() {
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m;
cin >> n >> m;
for (int i=1;i<=n;i++) {
cin >> rmq[i][0];
}
for (int j=1;(1<<j)<=n;j++) {
for (int i=1;i+(1<<j)-1<=n;i++) {
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
}
}
for (int i=1;i<=m;i++) {
int l,r;
cin >> l >> r;
cout << query(l,r) << "\n";
}
return 0;
}