Pagini recente » Cod sursa (job #2317388) | Cod sursa (job #2263667) | Cod sursa (job #2068422) | Cod sursa (job #224794) | Cod sursa (job #2647042)
#include<fstream>
#include<math.h>
using namespace std;
const long long int f=100005;
int minim(long long int v[] , long long int a , long long int b){
long long int m=v[a];
for(long long int i=a;i<=b;i++){
if(m>v[i]){
m=v[i];
}
}
return m;
}
int main(){
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long long int n,t,a,b;
fin>>n>>t;
long long int v[f],d[20][f]={};
for(long long int i=1;i<=n;i++){
fin>>v[i];
}
for(long long int i=0;i<=log2(n);i++){
long long int g=pow(2,i);
for(long long int j=1;j<=n-g+1;j++){
d[i][j]=minim(v,j,j+g-1);
}
}
for(long long int i=1;i<=t;i++){
fin>>a>>b;
long long int c=log2(b-a),k=b-pow(2,c)+1;
fout<<min(d[c][a],d[c][k])<<"\n";
}
}