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