Pagini recente » Profil deresuroberto | Rating Andrei Bancila (ardutgamer) | Monitorul de evaluare | Rating Rus Cristian (cristy) | Cod sursa (job #3294927)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int main() {
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long n, m, x, y;
fin >> n >> m;
long rmq[100000][2000];
for (int i = 0; i < n; i++) {
fin >> rmq[i][0];
}
for (int j = 1; j <= log2(n); j++) {
for (int i = 0; i < n; i++) {
rmq[i][j] = min(rmq[i][j-1], rmq[i + (1<<(j-1))][j-1]);
}
}
for (int nr = 1; nr <= m; nr++) {
fin >> x >> y;
x--;
y--;
int k = int(log2(y - x + 1));
int minRMQ = min(rmq[x][k], rmq[y - (1<<k) + 1][k]);
fout << minRMQ << endl;
}
fin.close();
fout.close();
return 0;
}