Pagini recente » Cod sursa (job #2853483) | Cod sursa (job #1892821) | Cod sursa (job #684866) | Cod sursa (job #896134) | Cod sursa (job #2886460)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m;
int t[16][100000];
int putere(int baza, int exp);
void gentabel();
int MRQ(int l, int r);
int main(){
fin >> n >> m;
for(int i = 0, p; i < n; i++){
fin >> t[0][i];
}
gentabel();
for(int i = 0, l, r; i < m; i++){
fin >> l >> r;
fout << MRQ(l-1, r-1) << '\n';
}
return 0;
}
int putere(int baza, int exp){
int p = 1;
for(int i = 0; i < exp; i++){
p *= baza;
}
return p;
}
void gentabel(){
for(int i = 1, p; i < 17; i++){
p = putere(2, i);
for(int j = 0; j < n-p+1; j++){
t[i][j] = min(t[i-1][j], t[i-1][j + putere(2, i-1)]);
}
}
}
int MRQ(int l, int r){
int p = floor(log2(r-l+1)), k, mini;
k = putere(2, p);
mini = min(t[p][l], t[p][r-k+1]);
return mini;
}