Pagini recente » Cod sursa (job #2971187) | Cod sursa (job #282129) | Cod sursa (job #332976) | Cod sursa (job #2969387) | Cod sursa (job #3032379)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m;
std::vector<std::vector<int> > v;
void compute_v(){
for(int i=1;1<<i<=v.size()-1;i++){
for(int j=1;j+(1<<i)-1<=v.size()-1;j++){
v[j].push_back( min(v[j][i-1],v[j+(1<<(i-1))][i-1]) );
}
}
}
int main(int argc, char const *argv[]) {
fin>>n>>m;
v.resize(n+1);
int x,y;
for(int i=1;i<=n;i++){
fin>>x;
v[i].push_back(x);
}
compute_v();
for(int i=1;i<=m;i++){
fin>>x>>y;
int exp= (int)log2(y-x+1);
fout<<min(v[x][exp],v[y-(1<<exp)+1][exp])<<'\n';
}
return 0;
}