Pagini recente » Cod sursa (job #1810359) | Cod sursa (job #1323555) | Cod sursa (job #2131789) | Cod sursa (job #1476258) | Cod sursa (job #1472202)
#include <fstream>
#include <cmath>
#define mini(x,y) (x > y) ? y : x
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N,M,R[100001][18],x,y;
int log2s(int n){
return trunc(log2(n*1.0));
}
int query(int l,int r){
return mini(R[l][log2s(r-l+1)] , R[r-(1<<log2s(r-l+1))+1][log2s(r-l+1)]);
}
int main(){
fin >> N >> M;
for(int i = 0;i<N;i++) fin >> R[i][0];
for(int k = 1;(1<<k) < N;k++)
for(int i = 0;i< N - (1<<k);i++){
R[i][k] = mini(R[i][k-1],R[i+(1<<k-1)][k-1]);
}
for(int i = 0;i<M;i++){
fin >> x >> y;
fout << query(x-1,y-1) << '\n';
}
return 0;
}