Pagini recente » Cod sursa (job #424891) | Cod sursa (job #756047) | Cod sursa (job #1259563) | Cod sursa (job #272248) | Cod sursa (job #2484217)
#include<fstream>
#include<cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int Maxx=1e5+1;
const int PMaxx=18;
int n,m;
int A[Maxx];
int sparseTable[Maxx][PMaxx];
void build_sparseTable(){
int i,j;
for(i=1; i<=n; ++i){
sparseTable[i][0] = A[i];
}
for (j=1; (1<<j)<=n; ++j){
for (i=1; i+(1<<j)-1<=n; ++i){
sparseTable[i][j] = min(sparseTable[i][j-1],sparseTable[i+(1<<(j-1))][j-1]);
}
}
}
int query(int left, int right){
int lp = log2(right-left+1);
return min(sparseTable[left][lp],sparseTable[right-(1<<lp)+1][lp]);
}
int main() {
fin>>n>>m;
int i;
for (i=1; i<=n; ++i){
fin>>A[i];
}
build_sparseTable();
int x,y;
for (i=1; i<=m; ++i){
fin>>x>>y;
fout<<query(x,y)<<"\n";
}
return 0;
}