Pagini recente » Cod sursa (job #2139373) | Cod sursa (job #1162825) | tema | Cod sursa (job #2542860) | Cod sursa (job #3296338)
#include <bits/stdc++.h>
#define pb push_back
//#define int long long
using namespace std;
const int N=1e5+5,LOG=20;
int lg[N],rmq[N][LOG];
int query(int l, int r)
{
int sz=r-l+1;
return min(rmq[l][lg[sz]],rmq[r-(1<<lg[sz])+1][lg[sz]]);
}
signed main()
{
ifstream cin("rmq.in");ofstream cout("rmq.out");
int n,q;
cin>>n>>q;
for(int i=1;i<=n;++i) cin>>rmq[i][0];
lg[1]=0;
for(int i=2;i<=n;++i) lg[i]=lg[i/2]+1;
for(int j=1;j<=lg[n];++j)
{
for(int i=1;i+(1<<j)-1<=n;++i)
{
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
}
}
while(q--)
{
int l,r;cin>>l>>r;
cout<<query(l,r)<<'\n';
}
}