Pagini recente » Cod sursa (job #1588859) | Cod sursa (job #2934774) | Cod sursa (job #3125707) | Cod sursa (job #710019) | Cod sursa (job #2959523)
#include <fstream>
#include <vector>
#define nmax int32_t(1e5 + 5)
//#define int long long
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int v[100001], rmq[100001][32];
int build(int l, int r){
int n = l-r+1;
int pow=1;
while(1<<(pow+1) <= n)
pow ++;
return min(rmq[l][pow], rmq[r-(1<<pow)+1][pow]);
}
int main() {
int n;
cin>>n;
int q;
cin>>q;
for(int i=0; i<n; i++){
cin>>v[i];
rmq[i][0] = v[i];
}
for(int j=1; (1<<j) < n; j++){
for(int i=0; i+(1<<j)-1<n; i++)
rmq[i][j] = min(rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);
}
for(int i=0; i<n; i++){
int l, r;
cin>>l>>r;
l--;
r--;
cout<<build(l, r)<<endl;
}
}