Pagini recente » Cod sursa (job #1485272) | Cod sursa (job #64759) | Cod sursa (job #3137297) | Cod sursa (job #3175111) | Cod sursa (job #155888)
Cod sursa(job #155888)
#include <fstream>
#include <algorithm>
using namespace std;
int RMQ[17][1 << 17];
int main(void) {
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N, M;
int i, j, a, b, d;
fin >> N >> M;
for (i = 1; i <= N; ++i)
fin >> RMQ[0][i];
for (i = 1; (1 << i) <= N; ++i) {
d = 1 << (i - 1);
for (j = 1; j + d + d <= N + 1; ++j)
RMQ[i][j] = min(RMQ[i-1][j], RMQ[i-1][j+d]);
}
for (i = 0; i < M; ++i) {
fin >> a >> b;
for (d = b - a + 1, j = -1; d; d >>= 1, ++j);
fout << min(RMQ[j][a], RMQ[j][b - (1 << j) + 1]) << '\n';
}
fin.close();
fout.close();
return 0;
}