- [USACO07JAN]Balanced Lineup G
1
- @ 2026-7-25 10:26:56
#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
- 上传者