Pagini recente » Cod sursa (job #351133) | Cod sursa (job #1550648) | Cod sursa (job #2456118) | Cod sursa (job #2913526) | Cod sursa (job #2884482)
#include <bits/stdc++.h>
#define ll long long
#define INF 0x3F3F3F3F
using namespace std;
const string fisier = "rmq";
ifstream fin (fisier + ".in");
ofstream fout (fisier + ".out");
const int N_MAX = 1e5 + 5;
int n , q;
int m[N_MAX][19];
int solve (int l , int r){
int lungime = r - l + 1 , k = 0;
while (1 << (k + 1) <= lungime){
k += 1;
}
return min(m[l][k] , m[r - (1 << k) + 1][k]);
}
int main(){
ios_base::sync_with_stdio(false);
fin >> n >> q;
for (int i=1; i<=n; i++){
int x; fin >> x;
m[i][0] = x;
}
for (int j=1; j<18; j++){
for (int i=1; i+(1<<j)-1<=n; i++){
m[i][j] = min(m[i][j - 1] , m[i + (1 << (j - 1))][j - 1]);
}
}
while (q--){
int l , r; fin >> l >> r;
fout << solve(l , r) << '\n';
}
}