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