提交时间:2025-02-07 15:34:06
运行 ID: 36088
#include <bits/stdc++.h> using namespace std; int a[10005], n; signed main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } long long ans = 0; for (int i = 1; i <= n; i++) { priority_queue <int> dq; priority_queue <int, vector <int>, greater <int> > xq; for (int j = i; j <= n; j++) { if (j == i) dq.push(a[j]); else if (dq.top() >= a[j]) dq.push(a[j]); else xq.push(a[j]); if (dq.size() - 1 > xq.size()) { xq.push(dq.top()); dq.pop(); } else if (xq.size() > dq.size()) { dq.push(xq.top()); xq.pop(); } if (((j - i) & 1) == 0) { ans += i * j * dq.top(); } } } printf("%lld", ans); return 0; }