Pagini recente » Cod sursa (job #2226652) | Cod sursa (job #1813570) | Cod sursa (job #1918354) | Cod sursa (job #1997596) | Cod sursa (job #2900636)
#include <bits/stdc++.h>
std::ifstream fin("rmq.in");
std::ofstream fout("rmq.out");
int RMQ[50][100005];
int main() {
int n, m, i, j;
fin >> n >> m;
for (i = 1; i <= n; ++ i)
fin >> RMQ[0][i];
for (i = 1; i <= std::__lg(n); ++ i)
for (j = 1; j + (1 << i) - 1 <= n; ++ j)
RMQ[i][j] = std::min(RMQ[i - 1][j], RMQ[i - 1][j + (1 << (i - 1))]);
int x, y, k;
while (m) {
-- m;
fin >> x >> y;
if (x > y)
std::swap(x, y);
k = std::__lg(y - x + 1);
fout << std::min(RMQ[k][x], RMQ[k][y - (1 << (k - 1))]) << '\n';
}
return 0;
}