#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>

struct ST {
    vector<vector<int>> f;
    int n, m;
    ST(vector<int> a) {
        n = a.size();
        m = __lg(n);
        f.assign(m + 1, vector(n, 0));
        f[0] = a;

        for (int j = 1; j <= m; j++) {
            for (int i = 1; i < n; i++) {
                if (i + (1 << j - 1) >= n) break;
                f[j][i] = max(f[j - 1][i], f[j - 1][i + (1 << j - 1)]);
            }
        }
    }

    int get(int l, int r) {
        int len = r - l + 1;
        int j = __lg(len);
        return max(f[j][l], f[j][r - (1 << j) + 1]);
    }
};
void solve() {
    int n, m;
    cin >> n >> m;

    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++) cin >> a[i];

    ST st(a); // max
    for (auto &x : a) x = -x;
    ST st1(a); // min
    while (m--) {
        int l, r;
        cin >> l >> r;
        cout << st.get(l, r) - (-st1.get(l, r)) << '\n';
    }
}
signed main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    // cin >> t;
    while (t--) solve();
    return 0;
}
/*
g++ -std=c++20 1.cpp -o 1 && 1 < in.txt > out.txt
*/

0 条评论

目前还没有评论...

信息

ID
514
时间
ms
内存
MiB
难度
5
标签
递交数
31
已通过
13
上传者