Pagini recente » Cod sursa (job #2475961) | Cod sursa (job #1954110) | Cod sursa (job #2696406) | Cod sursa (job #12173) | Cod sursa (job #3276356)
#include <bits/stdc++.h>
using namespace std;
int v[100005], sp[100005][25];
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> v[i];
sp[i][0] = v[i];
}
for(int j = 1; (1<<j) <= n; j++){
for(int i = 1; i <= n; i++){
sp[i][j] = min(sp[i][j - 1], sp[i + (1 << (j - 1))][j - 1]);
}
}
int l, r;
for(int z = 0; z < m; z++){
cin >> l >> r;
int x = (int)log2(r - l + 1);
cout << min(sp[l][x], sp[r - (1 << x) + 1][x]) << "\n";
}
return 0;
}