Pagini recente » Cod sursa (job #2826653) | Cod sursa (job #3267059) | Cod sursa (job #2112821) | Cod sursa (job #2112774) | Cod sursa (job #3295603)
#include <bits/stdc++.h>
#define DIM 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int LOG = 20;
int n,a,b,q;
int E[DIM];
int rmq[DIM][LOG];
int Query(int st, int dr){
int e = E[dr-st+1];
int len = (1<<e);
return min(rmq[st][e],rmq[dr-len+1][e]);
}
int main(){
fin >> n >> q;
for(int i=1;i<=n;i++){
fin >> rmq[i][0];
}
for(int j = 1;(1<<j)<=n;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
rmq[i][j] = min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
E[1] = 0;
for(int i=2;i<=n;i++)
E[i] = 1 + E[i/2];
while(q--){
fin >> a >> b;
fout << Query(a,b) << '\n';
}
return 0;
}