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