Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: loop
Problemset: ปริมาตรน้ำท่วม
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-10 18:33:45
#include <cstdio>
int h[10005], lmax[10005], rmax[10005];
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &h[i]);
for (int i = 0; i < n; i++) lmax[i] = (i == 0 || h[i] > lmax[i - 1]) ? h[i] : lmax[i - 1];
for (int i = n - 1; i >= 0; i--) rmax[i] = (i == n - 1 || h[i] > rmax[i + 1]) ? h[i] : rmax[i + 1];
long long water = 0;
for (int i = 0; i < n; i++) {
int level = lmax[i] < rmax[i] ? lmax[i] : rmax[i];
water += level - h[i];
}
printf("%lld\n", water);
return 0;
}