Pagini recente » Cod sursa (job #978662) | Cod sursa (job #67458) | Cod sursa (job #550881) | Cod sursa (job #2657059) | Cod sursa (job #2636459)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[20][100005], n, m, x, y, lg[100005];
void citire() {
fin >> n >> m;
for(int i = 1; i <= n; i++)
fin >> rmq[0][i];
}
void pre() {
lg[1] = 0;
for(int i = 2; i <= n; i++)
lg[i] = 1+lg[i/2];
for(int i = 1; (1<<i) <= n; i++)
for(int j = 1; j <= n-(1<<i)+1; j++)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
}
void solve() {
while(m--) {
fin >> x >> y;
int log = lg[y-x+1];
fout << min(rmq[log][x], rmq[log][y-(1<<log)+1]) << '\n';
}
}
int main() {
citire();
pre();
solve();
}