Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: ZanTy

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-07 11:58:15

#include <stdio.h>
int min(int a,int b){
    if (a < b){
        return a;
    }
    else {
        return b;
    }
}

int arr[10005];
int leftmx[10005];
int rightmx[10005];
int main(){
    int n,h;
    scanf("%d",&n);
    for (int i = 1; i<= n;i++){
        scanf("%d",&arr[i]);
    }
    leftmx[1] = arr[1],rightmx[n] = arr[n];
    for (int i = 2;i <= n;i++){
        if (arr[i] > leftmx[i-1]){
            leftmx[i] = arr[i];
        }
        else {
            leftmx[i] = leftmx[i-1];
        }
    }
    for (int i = n-1;i >= 1;i--){
        if (arr[i] > rightmx[i+1]){
            rightmx[i] = arr[i];
        }
        else {
            rightmx[i] = rightmx[i+1];
        }
    }
    long long water = 0;
    for (int i = 1;i <= n;i++){
        water = water + min(leftmx[i],rightmx[i]) - arr[i];
    }
    printf("%lld",water);
}