Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: cyblox_boi

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-22 20:23:52

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n;
	cin >> n;
	
	vector<int> heights(n);
	
	for (int i = 0; i < n; i++) {
		cin >> heights[i];
	}
	
	vector<int> leftMax(n), rightMax(n);
	
	leftMax[0] = heights[0];
	
	for (int i = 1; i < n; i++) {
		leftMax[i] = max(leftMax[i - 1], heights[i]);
	}
	
	rightMax[n - 1] = heights[n - 1];
	
	for (int i = n - 2; i >= 0; i--) {
		rightMax[i] = max(rightMax[i + 1], heights[i]);
	}
	
	int totalWater = 0;
	
	for (int i = 0; i < n; i++) {
		int waterLevel = min(leftMax[i], rightMax[i]);
		
		if (waterLevel > heights[i]) {
			totalWater += waterLevel - heights[i];
		}
	}
	
	cout << totalWater << '\n';
	
	return 0;
}