Pagini recente » Cod sursa (job #1356100) | Cod sursa (job #868417) | Cod sursa (job #2388207) | Cod sursa (job #1886119) | Cod sursa (job #3271867)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
const int NMAX = 1e5;
int rmq[18][NMAX+1], n, v[NMAX+1], q;
int calc_min(int x, int y){
if(x > y)
swap(x, y);
int dist = log2(y - x + 1);
return min(rmq[dist][x], rmq[dist][y - (1 << dist) + 1]);
}
int main()
{
f >> n >> q;
for(int i=1; i<=n; i++)
f >> v[i];
for(int i=1; i<=n; i++)
rmq[0][i] = v[i];
for(int i = 1; (1 << i) <= n; i++){
for(int j=1; j<=n; j++){
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1 << (i-1))]);
}
}
for(int i=1; i<=q; i++){
int x, y;
f >> x >> y;
g << calc_min(x, y) << "\n";
}
return 0;
}