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
*/