Submission

Status:

PPPP-PPPPP

Subtask/Task Score:

90/100

Score: 90

User: Zonezonee

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-13 12:08:57

#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    int h[n];
    for(auto &i : h) cin >> i;
    long long res = 0;
    for(int i = 0; i < n; ++i){
        int j = i+1;
        int added = 0, sum = 0;
        while(j < n && h[i] > h[j]){
            if(min(h[i], h[j])*(j-i-1)-sum > 0){
                // res -= added;
                res += max(0, min(h[i], h[j])*(j-i-1)-sum-added);
                added = min(h[i], h[j])*(j-i-1)-sum;
            }
            sum += h[j];
            j++;
        }
        if(j < n){
            if(min(h[i], h[j])*(j-i-1)-sum > 0){
                // res -= added;
                // res += min(h[i], h[j])*(j-i-1)-sum;
                res += max(0, min(h[i], h[j])*(j-i-1)-sum-added);
            }
        }
        i = j-1;
    }
    cout << res << '\n';
}