Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <array>
- #include <iostream>
- #include <vector>
- #include <stack>
- #include <deque>
- using namespace std;
- #define int long long
- const long long INF = 1e18 + 7;
- const int MAXN = 2e5 + 10;
- const int N = 2e5;
- signed main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- int n;
- cin >> n;
- vector<int> a(n);
- for (int i = 0; i < n; ++i) {
- cin >> a[i];
- }
- vector<int> l(n, -1), r(n, n);
- vector<int> st;
- for (int i = n - 1; i >= 0; --i) {
- while (!st.empty() && a[i] < a[st.back()]) {
- l[st.back()] = i;
- st.pop_back();
- }
- st.push_back(i);
- }
- st.clear();
- for (int i = 0; i < n; ++i) {
- while(!st.empty() && a[i] < a[st.back()]) {
- r[st.back()] = i;
- st.pop_back();
- }
- st.push_back(i);
- }
- int ans = 0;
- for (int i = 0; i < n; ++i) {
- ans = max(ans, a[i] * (r[i] - (l[i] + 1)));
- }
- cout << ans << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment