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;
}