Pagini recente » Cod sursa (job #2585504) | Cod sursa (job #3354631) | Cod sursa (job #3311341) | Cod sursa (job #854350) | Cod sursa (job #3330565)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
//#include <algorithm>
#define cin fin
#define cout fout
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m;
vector<vector<int>>matrice;
//vector<int>nu;
int min1(int a,int b){
return a<b ? a:b;
}
int main(){
cin>>n>>m;
matrice=vector<vector<int>>(n+1,vector<int>(n+1));
//nu=vector<int>(n+1);
for(int i=1;i<=n;i++){
cin>>matrice[0][i];
}
for(int k=1;(1<<k)<=n;k++){
for( int i=1;i+(1<<k)-1<=n;i++){
int j=i+(1<<(k-1));
matrice[k][i]=min(matrice[k-1][i],matrice[k-1][j]);
}
}
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
double r=log(y-x+1);
if(r==int(r)){
cout<<matrice[r][2]<<endl;
}
else{
int t=int(r),mi=matrice[t][2];
while(x!=y+1){
mi=min1(matrice[0][x],mi);
x++;
}
cout<<mi<<endl;
}
}
//vreau_acasa();
return 0;
}