fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n, m;
  6. cin >> n >> m;
  7. vector<int> a(n + 1);
  8. vector<int> b(m + 1);
  9. for(int i = 1; i <= n; i++){
  10. cin >> a[i];
  11. }
  12. for(int i = 1; i <= m; i++){
  13. cin >> b[i];
  14. }
  15. int MIN = min(n, m);
  16. int ans = INT_MIN;
  17. vector<int> dp(MIN + 1, INT_MIN);
  18. dp[0] = 0;
  19. for(int i = 1; i <= MIN; i++){
  20. dp[i] = max(a[i] * b[i], dp[i - 1] + (a[i] * b[i]));
  21. ans = max(ans, dp[i]);
  22. cout << dp[i] << " ";
  23. }cout << endl;
  24. vector<int> dp2(MIN + 1, INT_MIN);
  25. dp2[0] = 0;
  26. reverse(a.begin() + 1, a.end());
  27. for(int i = 1; i <= MIN; i++){
  28. dp2[i] = max(a[i] * b[i], dp2[i - 1] + (a[i] * b[i]));
  29. ans = max(ans, dp2[i]);
  30.  
  31. }
  32. cout << ans;
  33.  
  34. }
Success #stdin #stdout 0.01s 5324KB
stdin
5 5
-3 -3 3 3 -3
2 2 2 2 2
stdout
-6 -6 6 12 6 
12