Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: kf._.exe

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-09-25 22:39:50


#include <cstring>
#include <stdio.h>
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
int main() {

    int n;
    scanf("%d", &n);
    int h[n], l[n], r[n];
    memset(h, 0, n * sizeof(int));
    memset(l, 0, n * sizeof(int));
    memset(r, 0, n * sizeof(int));
    for (int i = 0; i < n; ++i) {
        scanf("%d", h + i);
    }
    l[0] = h[0];
    r[n - 1] = h[n - 1];
    for (int i = 1; i < n; i++) {
        l[i] = max(l[i - 1], h[i]);
        r[n - i - 1] = max(r[n - i], h[n - i - 1]);
    }
    int water = 0;
    for (int i = 0; i < n; i++) {
        water += min(r[i], l[i]) - h[i];
    }
    printf("%d\n", water);
    return 0;
}