Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #965641) | Borderou de evaluare (job #2147818) | Cod sursa (job #3310690)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long long int n,m;
long long int mat[20][100001];
int main(){
fin>>n>>m;
for(int i=1;i<=n;i++){
fin>>mat[0][i];
//fout<<mat[0][i]<<" ";
}
//fout<<endl;
for(int i=1;i<17;i++){
for(int j=1;j<=n-pow(2,i)+1;j++){
long long int putere=pow(2,i-1);
mat[i][j]=min(mat[i-1][j],mat[i-1][j+putere]);
//fout<<mat[i][j]<<" ";
}
//fout<<endl;
}
long long int l,r,logaritm,putere;
for(int i=0;i<m;i++){
fin>>l>>r;
logaritm=log2l(r-l+1);
putere=pow(2,logaritm);
fout<<min(mat[logaritm][l],mat[logaritm][r-putere+1])<<endl;
}
}