Pagini recente » Cod sursa (job #1026680) | Cod sursa (job #609004) | Cod sursa (job #980122) | Cod sursa (job #1021872) | Cod sursa (job #2647039)
#include<fstream>
#include<math.h>
using namespace std;
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[n],d[int(log2(n))][n]={};
for(long long int i=1;i<=n;i++){
fin>>v[i];
}
for(long long int i=0;i<=log2(n);i++){
for(long long int j=1;j<=n-pow(2,i)+1;j++){
d[i][j]=minim(v,j,j+pow(2,i)-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";
}
}