Pagini recente » Cod sursa (job #1796970) | Cod sursa (job #937442) | Cod sursa (job #256128) | Cod sursa (job #1270215) | Cod sursa (job #2647779)
#include<fstream>
#include<math.h>
using namespace std;
const long long int f=100005;
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];
d[0][i]=v[i];
}
for(long long int i=1;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]=min(d[i-1][j],d[i-1][j+g/2]);
}
}
for(long long int i=1;i<=t;i++){
fin>>a>>b;
long long int c=log2(b-a+1),k=b-pow(2,c)+1;
fout<<min(d[c][a],d[c][k])<<"\n";
}
}