Pagini recente » Cod sursa (job #3199526) | Cod sursa (job #1756210) | Cod sursa (job #1384393) | Cod sursa (job #1683304) | Cod sursa (job #1600238)
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int N, M, A[100010], D[20][100010], l, x, y;
int main(){
cin >> N >> M;
for(int i = 1; i <= N; i++)
cin >> A[i];
for(int i = 1; i <= N; i++)
D[0][i] = A[i];
for(int i = 1; (1 << i) <= N; i++){
for(int j = 1; j+(1 << i)-1 <= N; j++){
D[i][j] = min(D[i-1][j], D[i-1][j+(1 << (i-1))]);
}
}
for(int i = 1; i <= M; i++){
cin >> x >> y;
int diff = y-x+1;
l = log2(diff);
cout << min(D[l][x], D[l][y-(1 << l)+1]) << '\n';
}
return 0;
}