Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180628 | C班詹皓杰 | 收集雨水 | C++ | 通过 | 100 | 3 MS | 296 KB | 482 | 2024-08-21 16:40:12 |
#include<iostream> #include<stack> using namespace std; typedef long long lld; int a[10100]; stack<int> s; int main(){ int n; cin>>n; for(int i = 0; i < n; i++) cin>>a[i]; lld ans = 0; for(int i = 0; i < n; i++){ while(!s.empty() && a[s.top()]<a[i]){ int l = s.top(); s.pop(); if(s.empty()){ break; } lld d = i-s.top()-1; int h = min(a[s.top()],a[i]); ans += d*(h-a[l]); } s.push(i); } cout<<ans; return 0; }