Pagini recente » Cod sursa (job #2656132) | eusebiu_oji_2014_cls9 | Cod sursa (job #2809609) | Cod sursa (job #2310986) | Cod sursa (job #2900637)
#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;
}