V11WATER - Nước đọng

Tác giả: flashmt

Ngôn ngữ: C++

#include<iostream>
#include<algorithm>
#define fr(a,b,c) for (a=b;a<=c;a++)
#define frr(a,b,c) for (a=b;a>=c;a--)
#define maxn 100100
using namespace std;

int n,a[maxn],l[maxn],r[maxn];
long long re=0;

int main()
{
    int i,x;
    cin >> n;
    fr(i,1,n) scanf("%d",&a[i]);
    fr(i,2,n) l[i]=max(l[i-1],a[i-1]);
    frr(i,n-1,1) r[i]=max(r[i+1],a[i+1]);
    fr(i,1,n)
    {
       x=min(l[i],r[i]);
       if (x>a[i]) re+=x-a[i];
    }
    cout << re << endl;
    return 0;
}

Download