Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: pxsit

Problemset: ปริมาตรน้ำท่วม

Language: cpp

Time: 0.004 second

Submitted On: 2026-09-29 19:29:00

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> height(n);
    for (int i = 0; i < n; i++) {
        cin >> height[i];
    }
    vector<int> maxleft(n + 1, 0);
    maxleft[0] = height[0];
    for (int i = 1; i < n; i++) {
        maxleft[i] = max(maxleft[i - 1], height[i]);
    }
    vector<int> maxright(n + 1, 0);
    maxright[n - 1] = height[n - 1];
    for (int i = n - 2; i >= 0; i--) {
        maxright[i] = max(maxright[i + 1], height[i]);
    }
    int total = 0;
    for (int i = 1; i < n - 1; i++) {
        int ans = min(maxleft[i - 1], maxright[i + 1]) - height[i];
        if(ans < 0) continue;
        total += ans;
    }
    cout << total;
}