Pagini recente » Cod sursa (job #1073383) | Cod sursa (job #2969290) | Cod sursa (job #2728571) | Cod sursa (job #806505) | Cod sursa (job #2122318)
#include <bits/stdc++.h>
using namespace std;
int A[100010][20], n, m; // sparse table, tushar roy the man
int rmq(int st, int dr){
int l = dr - st + 1, k=0;
while ((1<<(k+1)) <= l) k++;
return min(A[st][k], A[st + l - (1<<k)][k]);
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
cin >> n >> m;
for (int i=1; i<=n; i++) cin >> A[i][0];
//preprocessing
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]);
}
}
while (m--){
int a,b;
cin >> a >> b;
cout << rmq(a,b) << "\n";
}
return 0;
}