Pagini recente » Borderou de evaluare (job #804946) | Cod sursa (job #170510) | Cod sursa (job #2545318) | Cod sursa (job #3170121) | Cod sursa (job #3164127)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pb push_back
#define pf push_front
#define FASTIO ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0)
#define pii pair<int , int>
const int MOD = 1e9 + 7;
const int MAX = 1e5 +5;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,q;
int v[MAX];
int RMQ[27][MAX];
int query(int l,int r)
{
int lg = 1;
while((1<<lg) <= (r-l+1))
lg++;
return min(RMQ[lg-1][l],RMQ[lg-1][r-(1<<(lg-1))+1]);
}
int32_t main()
{
FASTIO;
fin>>n>>q;
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=1;i<=n;i++)
RMQ[0][i] = v[i];
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j+(1<<i)-1 <= n; j++)
RMQ[i][j] = min(RMQ[i-1][j],RMQ[i-1][j+(1<<(i-1))]);
for(int i=1;i<=q;i++)
{
int l,r; fin>>l>>r;
fout<<query(l,r)<<'\n';
}
}