Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180624 | C班-范浩宇 | 收集雨水 | C++ | 通过 | 100 | 3 MS | 292 KB | 600 | 2024-08-21 16:38:23 |
#include <bits/stdc++.h> using namespace std; int height[10005], n; stack<int> st; int main() { cin >> n; for(int i = 0;i < n;i++) cin >> height[i]; long long ans = 0; for (int i = 0;i < n;i++) { while (!st.empty() && height[st.top()] < height[i]) { int low = st.top(); st.pop(); if (st.empty()) break; long long dist = i - st.top() - 1; int h = min(height[st.top()], height[i]); ans += dist * (h - height[low]); } st.push(i); } cout << ans << endl; return 0; }