#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MXN = 2e5+5;
int n;
int lf[MXN], rg[MXN];
ll val[MXN];
priority_queue<pair<ll, int>> pq;
bool mark[MXN];
int32_t main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
cin >> n;
for(int i=1; i<=n; i++) {
cin >> val[i];
pq.push({val[i], i});
lf[i] = i-1;
rg[i] = i+1;
}
rg[n+1] = n+1;
ll ans = 0;
int cnt=0;
while(cnt<(n+1>>1)) {
int i = pq.top().second;
pq.pop();
if(mark[i]) continue;
ans += val[i];
mark[lf[i]] = mark[rg[i]] = 1;
if(1<=lf[i] && rg[i]<=n)
pq.push({val[i] = val[lf[i]]+val[rg[i]]-val[i], i});
lf[i] = lf[lf[i]];
rg[i] = rg[rg[i]];
lf[rg[i]] = rg[lf[i]] = i;
cout << ans << '\n';
cnt++;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |