fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int fun(vector<int> &A, int B) {
  5. int n = A.size();
  6. int suff[n + 1]; // Suffix sum array
  7. suff[n] = 0; // Extra element for ease
  8. suff[n - 1] = A[n - 1];
  9.  
  10. // Compute suffix sum from right to left
  11. for (int i = n - 2; i >= 0; i--)
  12. suff[i] = A[i] + suff[i + 1];
  13.  
  14. int prefSum = 0; // Sum from left
  15. int ans = suff[n - B]; // Taking all B elements from right
  16.  
  17. // Try taking 'i' elements from left and remaining from right
  18. for (int i = 0; i < B; i++) {
  19. prefSum += A[i]; // Add current left element
  20. int suffSum = suff[n - B + (i + 1)]; // Remaining elements from right
  21. ans = max(ans, prefSum + suffSum);
  22. }
  23. return ans;
  24. }
  25.  
  26. int solve(vector<int> &A, int B) {
  27. return fun(A, B);
  28. }
  29.  
  30. int main() {
  31. vector<int> A = {5, -2, 3, 1, 2};
  32. int B = 3;
  33. cout << solve(A, B);
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
8