Pagini recente » Cod sursa (job #1094123) | Cod sursa (job #342185) | Cod sursa (job #2250279) | Cod sursa (job #251394) | Cod sursa (job #2791523)
#include <bits/stdc++.h>
using namespace std;
#define MAXN 100003
#define MAXLOGN 16
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long int n, m, v[MAXN], M[MAXN][MAXLOGN];
int main(){
fin >> n >> m;
for(int i=1 ; i<=n; i++){
fin >> v[i];
M[i][0] = v[i];
}
for(int j=1; j<MAXLOGN; j++)
for(int i=1; i <= n- (1 << j) + 1; i++){
M[i][j] = min(M[i][j-1], M[i+(1<<(j-1))][j-1]);
}
for(int i=1; i<=m; i++){
long int st, dr, lungime, minim, putere_maxima;
fin >> st >> dr;
lungime = dr - st + 1;
putere_maxima = log2(lungime);
minim = min(M[st][putere_maxima], M[dr-(1<<putere_maxima)+1][putere_maxima]);
fout << minim << '\n';
}
return 0;
}