Pagini recente » Cod sursa (job #2813660) | Cod sursa (job #2265859) | Cod sursa (job #854933) | Cod sursa (job #1155895) | Cod sursa (job #1160732)
#include <fstream>
using namespace std;
const int MAX_N = 100002;
int N, M;
int A[MAX_N][20], log2[MAX_N];
int main() {
ifstream f("rmq.in");
ofstream g("rmq.out");
f >> N >> M;
for(int i = 1; i <= N; ++i)
f >> A[i][0];
for(int j = 1; (1 << j) <= N; ++j)
for(int i = 1; i + (1 << j) - 1 <= N; ++i)
A[i][j] = min(A[i][j - 1], A[i + (1 << (j - 1))][j - 1]);
for(int i = 2; i < MAX_N; ++i)
log2[i] = log2[i / 2] + 1;
for(int i = 1, x, y; i <= M; ++i) {
int k = log2[y - x + 1], ans = 0;
f >> x >> y;
ans = min(A[x][k], A[y - (1 << k) + 1][k]);
g << ans << "\n";
}
f.close();
g.close();
return 0;
}