Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Jokul

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

Language: c

Time: 0.002 second

Submitted On: 2025-10-09 09:28:33

#include<stdio.h>
int main(){
    int n,max1=0,left=0,left2=0,right,sum=0,save=0,save1=0,save2,count=0,min,m=0,in=0;
    scanf("%d",&n);
    int r[n];
    int h[n+2];
    h[0]=0;
    r[0]=0;
    r[n+1]=0;
    h[n+1]=0;
    for(int i=1;i<=n;i++)
    {
     scanf("%d",&h[i]);
    if(max1<=h[i])
        {
            max1=h[i];
            save=i;
        }
        r[i]=0;
    }
//////////////////////////////////
    save2=save;
    min=max1;
    for(int i=1;i<save;i++)
    {
        if(h[i]>h[i-1]&&h[i]>h[i+1]&&h[i]>left)
        {
            left=h[i];
            left2=h[save1];
            save1=i;
        }
        else if(i>save1&&left>0){
            sum=sum+(left-h[i]);
        }
    }
    ///////////////////////////////////////
    right=0;
    for(int i=save+1;i<=n;i++)
    {
         if(h[i]>h[i-1]&&h[i]>h[i+1]&&h[i]<=min)
        {
            right=h[i];
            save2=i;
            break;
        }
    }
    for(int i=save+1;i<=n;i++)
    {
    if(h[i]>h[i-1]&&h[i]>h[i+1])
    {
        r[m]=h[i];
        m++;
    }
    }
    for(int i=save+1;i<=n;i++)
    {
        if(h[i]!=r[in])
        {
            if(i==n)
            {
                continue;
            }
            else{
            sum=sum+r[in]-h[i];
            }
        }
        else if(h[i]==r[in]&&in<m-1)
        {
            in++;
        }
    }
    //////////////////////////////
    printf("%d",sum);
}