Advertisement
wym1111

Untitled

Jul 5th, 2024
741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. using ll = long long;
  6. #define endl '\n'
  7.  
  8. const int N = 2e5 + 10;
  9.  
  10. int n, p;
  11. ll sum[N], a[N], k, t;
  12.  
  13. void solve() {
  14.     cin >> n >> p;
  15.     for (int i = 1; i <= n; i ++) {
  16.         cin >> a[i];
  17.         sum[i] = a[i] + sum[i - 1];
  18.     }
  19.     cin >> k >> t;
  20.     ll ans = 0;
  21.     for (int i = 1; i <= n; i ++) {
  22. //      cout << i << " *************\n";
  23.         if (i <= p) {
  24.             if (p - i + 1 > t) continue;
  25.             if (t - (p - i + 1) + i <= n) {
  26.                 int r = t - (p - i + 1) + i;
  27.                 ll now;
  28.                 if (r <= p) {
  29.                     now = sum[p] - sum[i - 1];
  30.                     now += k * t * (p - i + 1) - k * (p - i) * (p - i + 1) / 2;
  31.                 } else {
  32.                     now = sum[r] - sum[i - 1];
  33.                     now += k * t * (r - i + 1) - k * (r - i) * (r - i + 1) / 2;
  34.                 }
  35. //              cout << "debug1: " << now << endl;
  36.                 ans = max(ans, now);
  37.                 continue;
  38.             }
  39.             ll now = sum[n] - sum[i - 1];
  40.             now += k * t * (n - i + 1) - k * (n - i) * (n - i + 1) / 2;
  41.             ans = max(ans, now);
  42. //          cout << "1: " << now << endl;
  43.         } else {
  44.             if (i - p + 1 > t) continue;
  45.             if (t - (i - p + 1) < i) {
  46.                 int l = i - (t - (i - p + 1));
  47.                 ll now;
  48.                 if (l >= p) {
  49.                     now = sum[i] - sum[p - 1];
  50.                     now += k * t * (i - p + 1) - k * (i - p) * (i - p + 1) / 2;
  51.                 } else {
  52.                     now = sum[i] - sum[l - 1];
  53.                     now += k * t * (i - l + 1) - k * (i - l) * (i - l + 1) / 2;
  54.                 }
  55. //              cout << "debug2: " << now << endl;
  56.                 ans = max(ans, now);
  57.                 continue;
  58.             }
  59.             ll now = sum[i] + k * t * i - k * (i - 1) * i / 2;
  60.             ans = max(ans, now);
  61. //          cout << "2: " << now << endl;
  62.         }
  63.     }
  64.     cout << ans << endl;
  65. }
  66.  
  67. int main()
  68. {
  69.     ios::sync_with_stdio(false);
  70.     cin.tie(nullptr);
  71.     int _ = 1;
  72.     cin >> _;
  73.     while (_--)
  74.         solve();
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement