Pagini recente » Borderou de evaluare (job #1795032) | Borderou de evaluare (job #501230) | Borderou de evaluare (job #778826) | Borderou de evaluare (job #987511) | Cod sursa (job #1970709)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int maxn = 1e5 + 5;
const int maxl = 20;
int RMQ[maxl][maxn];
int main() {
ios_base :: sync_with_stdio(false);
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; i++) {
fin >> RMQ[0][i];
}
for (int i = 0; (1 << i) <= n; i++) {
for (int j = 1; j + (1 << i) <= n; j++) {
RMQ[i + 1][j] = min(RMQ[i][j], RMQ[i][j + (1 << i)]);
}
}
int x, y;
while (m--) {
fin >> x >> y;
int k = log2(y - x);
int ans = min(RMQ[k][x], RMQ[k][y - (1 << k) + 1]);
fout << ans << "\n";
}
return 0;
}