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