Toán tin vuotlen.com

Bài toán lượng nước ( Kỹ thuật cuốn chiếu )

// luong nuoc
#include <bits/stdc++.h>
using namespace std;
long mymax(long a, long b) {return a>b?a:b;}
int main{
    long n, res=0;
    cin>>n;
    vecto<long> a(n), L(n), R(n);
    for (auto &x:a) cin>>x;
    partial_sum(a.begin(), a.end(), L.begin(), mymax);
    partial_sum(a.rbegin(), a.rend(), L.rbegin(), mymax);
    for(int i=1;i<n-1;i++){
        long z = min(L[i-1], R[i+1]);
        if(z>a[i]) res+=z-a[i];
    }
    cout<<res;
}