Pagini recente » Cod sursa (job #1945273) | Cod sursa (job #3298801)
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+1;
const int K=18;
int st[K+1][N+5];
int log2_floor(unsigned long long x){
return x ? __builtin_clzll(1)-__builtin_clzll(x) : -1;
}
int main()
{
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
ios::sync_with_stdio(false);
int n,m;
cin>>n>>m;
for (int i=0;i<n;i++){
cin>>st[0][i];
}
for (int i=1;i<=K;i++){
for (int j=0;j+(1<<(i))<=N;j++){
st[i][j]=min(st[i-1][j], st[i-1][j+(1<<(i-1))]);
}
}
for (int j=0;j<m;j++){
int r,l;
cin>>l>>r;r--;l--;
int x=log2_floor(r-l+1);
cout<<min(st[x][l], st[x][r-(1<<(x))+1])<<'\n';
}
return 0;
}