#include <iostream>
using namespace std;
const int N = 1e6 + 5;
int m, n, money[N], Min[N][20], lg[N];
void solve()
{
cin >> m >> n;
for (int i = 1; i <= m; i++)
{
cin >> money[i];
Min[i][0] = money[i];
lg[i] = lg[i >> 1] + 1;
}
for (int j = 1; j <= 17; j++)
for (int i = 1; i <= m; i++)
{
Min[i][j] = min(Min[i][j - 1], Min[i + (1 << j - 1)][j]);
}
for (int i = 1, A, B; i <= n; i++)
{
cin >> A >> B;
cout << min(Min[A][lg[A - B]], Min[B - (1 << lg[A - B]) + 1][lg[A - B]]) << " ";
}
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
solve();
return 0;
}
求dalao调一下,我真的找不到问题