Advertisement
Dang_Quan_10_Tin

EDITOR

Sep 21st, 2022
957
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #define task "EDITOR"
  2. #include <iostream>
  3. #include <cstdio>
  4.  
  5. using namespace std;
  6.  
  7. using ll = long long;
  8. using ld = long double;
  9. constexpr int N = 2e5 + 5;
  10. constexpr ll Inf = 1e17;
  11. int n, q;
  12. ll a[N], pref[N], suf[N], b[N];
  13.  
  14. void Read()
  15. {
  16.     cin >> n >> q;
  17.  
  18.     for (int i = 1; i <= n; ++i)
  19.         cin >> a[i];
  20. }
  21.  
  22. void Solve()
  23. {
  24.     pref[0] = suf[0] = -Inf;
  25.  
  26.     for (int i = 1; i <= n; ++i)
  27.     {
  28.         a[i] += a[i - 1];
  29.         pref[i] = max(pref[i - 1], a[i]);
  30.     }
  31.  
  32.     int m1 = n, m2 = 0;
  33.     ll up(0);
  34.  
  35.     while (q--)
  36.     {
  37.         char t;
  38.         int x;
  39.         cin >> t;
  40.  
  41.         if (t == 'A')
  42.         {
  43.             cin >> x;
  44.  
  45.             ++m1;
  46.             a[m1] = a[m1 - 1] + x;
  47.             pref[m1] = max(pref[m1 - 1], a[m1]);
  48.         }
  49.         else if (t == 'D')
  50.         {
  51.             --m1;
  52.         }
  53.         else if (t == 'L')
  54.         {
  55.             x = a[m1] - a[m1 - 1];
  56.             --m1;
  57.  
  58.             up += x;
  59.             ++m2;
  60.             b[m2] = x - up;
  61.             suf[m2] = max(suf[m2 - 1], b[m2]);
  62.         }
  63.         else if (t == 'R')
  64.         {
  65.             x = b[m2] + up;
  66.             up -= x;
  67.             --m2;
  68.  
  69.             ++m1;
  70.             a[m1] = a[m1 - 1] + x;
  71.             pref[m1] = max(pref[m1 - 1], a[m1]);
  72.         }
  73.         else
  74.         {
  75.             cout << max(pref[m1], suf[m2] + up + a[m1]) << "\n";
  76.         }
  77.     }
  78. }
  79.  
  80. int32_t main()
  81. {
  82.     ios_base::sync_with_stdio(0);
  83.     cin.tie(0);
  84.     cout.tie(0);
  85.  
  86.     if (fopen(task ".INP", "r"))
  87.     {
  88.         freopen(task ".INP", "r", stdin);
  89.         freopen(task ".OUT", "w", stdout);
  90.     }
  91.     Read();
  92.     Solve();
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement