Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: havename
Problemset: ปริมาตรน้ำท่วม
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-15 21:39:26
#include<bits/stdc++.h>
#define inf int(1e9)
using namespace std;
int main(){
int water=0,n,mxmiddle=-5,mxleft=-5,mxright=-5,mxmiddleidx=-5,mxleftidx=-5,mxrightidx=-5,tem,temidx;
cin>>n;
int high[n+1];
for(int i=1;i<=n;i++){
cin>>high[i];
if(high[i]>mxmiddle){
mxmiddle=high[i];
mxmiddleidx=i;
tem=mxmiddle;
temidx=i;
}
}
for(int i=mxmiddleidx-1;i>=1;i--){
if(high[i]>mxleft){
mxleft=high[i];
mxleftidx=i;
}
}
for(int i=mxmiddleidx+1;i<=n;i++){
if(high[i]>mxright){
mxright=high[i];
mxrightidx=i;
}
}
if(mxmiddleidx!=1){
//cout<<mxmiddleidx<<"\n";
while(true){
for(int i=mxmiddleidx-1;i>mxleftidx;i--){
water=water+mxleft-high[i];
// cout<<water<<" "<<i<<" "<<mxleft<<" "<<high[i]<<"\n";
}
if(mxleftidx==1){
break;
}
mxmiddleidx=mxleftidx;
mxleft=-5;
for(int i=mxmiddleidx-1;i>=1;i--){
if(high[i]>mxleft){
mxleft=high[i];
mxleftidx=i;
}
}
}
}
//cout<<water<<" ";
//cout<<temidx<<" ";
//cout<<mxrightidx;
if(temidx!=n){
while(true){
// cout<<temidx<<" "<<mxrightidx<<"\n"<<mxright;
for(int i=temidx+1;i<=mxrightidx;i++){
water=water+mxright-high[i];
// cout<<"\n"<<i<<" "<<water<<" "<<high[i];
}
if(mxrightidx==n){
break;
}
temidx=mxrightidx;
mxright=-5;
for(int i=temidx+1;i<=n;i++){
if(high[i]>=mxright){
mxright=high[i];
mxrightidx=i;
}
}
}
}
cout<<water;
}
/*
8
4 2 6 1 3 8 1 7
*/