?????????Hello大家好!很高興我們又見面啦!給生活添點passion,開始今天的編程之路!
我的博客:<但凡.
我的專欄:《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C++修煉之路》
歡迎點贊,關注!
1、題目?
2、題解?
#include<iostream>
#include<stack>
using namespace std;
const int N = 1e6 + 10;
int v[N];
int h[N];
int ret[N];
int n;
int x;int main()
{cin >> n;for (int i = 1;i <= n;i++) cin >> h[i] >> v[i];stack<int> s;//注意這道題是兩邊//找大for (int i = 1;i <= n;i++){while (s.size() && h[i] >= h[s.top()]) s.pop();if (s.size()){ret[s.top()] += v[i];}s.push(i);}//清空棧while (s.size()) s.pop();for (int i = n;i >= 1;i--){while (s.size() && h[i] >= h[s.top()]) s.pop();if (s.size()) {ret[s.top()] += v[i];}s.push(i);}for (int i = 1;i <= n;i++) x = max(x, ret[i]);cout << x << endl;return 0;
}