Pagini recente » Cod sursa (job #953026) | Cod sursa (job #2336566) | Cod sursa (job #2800833) | Cod sursa (job #487850) | Cod sursa (job #2893346)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int NMAX = 1e5;
int rmq[21][NMAX + 1], logaritm2[NMAX + 1], n, q, x, y;
int main(){
cin >> n >> q;
logaritm2[1] = 0;
for(int i = 1; i <= n; i++){
cin >> rmq[0][i];
if(i != 1)
logaritm2[i] = 1 + logaritm2[(i >> 1)];
}
for(int i = 1; i <= logaritm2[n]; i++)
for(int j = (1 << i); j <= n; j++)
rmq[i][j] = min(rmq[i - 1][j - (1 << (i - 1))], rmq[i - 1][j]);
int l = 0;
for(int i = 1; i <= q; i++){
cin >> x >> y;
l = logaritm2[y - x + 1];
cout << min(rmq[l][x + (1 << l) - 1], rmq[l][y]) << "\n";
}
}