From 351937e7a337148cedd9f3ae1160fae7b98c74de Mon Sep 17 00:00:00 2001 From: hanyixuanten <105723997+hanyixuanten@users.noreply.github.com> Date: Wed, 8 Jul 2026 13:23:49 +0800 Subject: [PATCH] new file: P2880.cpp --- P2880.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 P2880.cpp diff --git a/P2880.cpp b/P2880.cpp new file mode 100644 index 0000000..9f4ee12 --- /dev/null +++ b/P2880.cpp @@ -0,0 +1,34 @@ +#include +#include +#include +using namespace std; +int n; +int a[50005]; +int ma[50005][20], mi[50005][20]; +int main() +{ + int q; + scanf("%d %d", &n, &q); + for (int i = 0; i < n; ++i) + { + scanf("%d", &a[i]); + ma[i][0] = a[i], mi[i][0] = a[i]; + } + for (int j = 1; j < 20; ++j) + { + for (int i = 0; i + (1 << (j - 1)) < n; ++i) + { + ma[i][j] = max(ma[i][j - 1], ma[i + (1 << (j - 1))][j - 1]); + mi[i][j] = min(mi[i][j - 1], mi[i + (1 << (j - 1))][j - 1]); + } + } + while (q--) + { + int l, r; + scanf("%d %d", &l, &r); + l--, r--; + int d = log2(r - l + 1); + printf("%d\n", max(ma[l][d], ma[r - (1 << d) + 1][d]) - min(mi[l][d], mi[r - (1 << d) + 1][d])); + } + return 0; +} \ No newline at end of file