Advertisement
ivnikkk

Untitled

Dec 24th, 2021
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include <vector>
  2. #include<iostream>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <iomanip>
  6. #include <fstream>
  7. #include <string>
  8. #include <set>
  9. #include <deque>
  10. #include <queue>
  11. #include <map>
  12. #include <bitset>
  13. #include <random>
  14. #include <cassert>
  15. #include <unordered_map>
  16. #include <unordered_set>
  17. #include<math.h>
  18. using namespace std;
  19. typedef long long             ll;
  20. typedef unsigned long long     ull;
  21. typedef long double            ld;
  22. #define endl              "\n"
  23. #define all(a)            a.begin(), a.end()
  24. #define allr(a)           a.rbegin(), a.rend()
  25. #define pb                push_back
  26. #define pikachu           push_back
  27. #define F                 first
  28. #define S                  second
  29. #define mp                make_pair
  30. ll inf = 1e18;
  31. void solve() {
  32.     ll n;
  33.     cin >> n;
  34.     vector <ll> a(n + 2, -inf), prefix(n + 1, 0);
  35.     for (ll i = 1; i <= n; i++) {
  36.         cin >> a[i];
  37.         prefix[i] = prefix[i - 1] + a[i];
  38.     }
  39.     vector <ll> stack1(1, 0), stack2(1, n + 1), ans1(n + 2), ans2(n + 2);
  40.     for (ll i = 1; i < n + 2; i++) {
  41.         while (a[stack1.back()] > a[i]) {
  42.             ans1[stack1.back()] = i;
  43.             stack1.pop_back();
  44.         }
  45.         stack1.pikachu(i);
  46.     }
  47.     for (ll i = n + 1; i >= 1; i--) {
  48.         while (a[stack2.back()] > a[i]) {
  49.             ans2[stack2.back()] = i;
  50.             stack2.pop_back();
  51.         }
  52.         stack2.pikachu(i);
  53.     }
  54.     ll pizda = -inf;
  55.     for (ll i = 1; i <= n; i++) {
  56.         ll cnt = 1;
  57.         if (ans2[i] == 0) cnt = 0;
  58.         pizda = max(pizda, a[i] * (prefix[ans1[i]-1] - prefix[ans2[i]]));
  59.     }
  60.     cout << pizda;
  61. }
  62. signed main() {
  63.     ios_base::sync_with_stdio(false);
  64.     cin.tie(nullptr);
  65.     ll t = 1;
  66.     //cin >> t;
  67.     while (t--) {
  68.         solve();
  69.     }
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement