Pagini recente » Cod sursa (job #1369654) | Cod sursa (job #2588761) | Cod sursa (job #2867720) | Cod sursa (job #2336548) | Cod sursa (job #2766343)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout("rmq.out");
const int dim=100009;
int n,m,v[dim],rmq[20][dim];
void generare(){
for(int i=1;i<=n;i++)
rmq[0][i]=v[i];
int ct=1;
for(int put=2;put<=n;put*=2){
for(int i=1;i+put-1<=n;i++)
rmq[ct][i]=min(rmq[ct-1][i],rmq[ct-1][i+put/2]);
ct++;
}
}
void putere(int x,int& put,int& exp){
put=1,exp=0;
while(put*2<=x){
put*=2;
exp++;
}
}
signed main(){
fin>>n>>m;
for(int i=1;i<=n;i++){
fin>>v[i];
}
generare();
for(int i=1;i<=m;i++){
int st,dr;
fin>>st>>dr;
int put,exp;
putere(dr-st+1,put,exp);
fout<<min(rmq[exp][st],rmq[exp][dr-put+1])<<'\n';
}
}