fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Codechef
  6. {
  7. public static void main (String[] args) throws java.lang.Exception
  8. {
  9. // your code goes here
  10. Scanner sc=new Scanner(System.in);
  11. int t=sc.nextInt();
  12. while(t-->0){
  13. int n=sc.nextInt();
  14. int []ar1=new int [n+1];
  15. for(int i=1;i<=n;i++){
  16. ar1[i]=sc.nextInt();
  17. }
  18. int m=sc.nextInt();
  19. int []ar2=new int [m+1];
  20. for(int i=1;i<=m;i++){
  21. ar2[i]=sc.nextInt();
  22. }
  23. int max=maxSubSum(ar1,ar2);
  24. System.out.println(max);
  25. }
  26. sc.close();
  27. }
  28. public static int maxSubSum(int[]ar1, int[]ar2){
  29. // +ve sum of second array...
  30. int Psum=0;
  31. for(int num:ar2){
  32. if(num>0)Psum+=num;
  33. }
  34. int []prefix=new int[ar1.length];
  35. int []suffix=new int[ar1.length+1];
  36. for(int i=1;i<prefix.length;i++){
  37. prefix[i]=prefix[i-1]+ar1[i];
  38. }
  39. for(int i=ar1.length-1;i>0;i--){
  40. suffix[i]=suffix[i+1]+ar1[i];
  41. }
  42.  
  43. // max_p and map_s
  44. int[] max_p=new int[ar1.length];
  45. int sum1=0;
  46. for(int i=1;i<max_p.length;i++){
  47. sum1=Math.max(sum1+ar1[i],ar1[i]);
  48. max_p[i]=Math.max(sum1,Psum+prefix[i]);
  49. }
  50. int[] max_s=new int[ar1.length];
  51. int sum2=0;
  52. for(int i=max_s.length-1;i>0;i--){
  53. sum2=Math.max(sum2+ar1[i],ar1[i]);
  54. max_s[i]=Math.max(sum2,Psum+suffix[i]);
  55. }
  56.  
  57. int max_p_sum=Integer.MIN_VALUE;
  58. int max_s_sum=Integer.MIN_VALUE;
  59. for(int i=1;i<max_s.length;i++){
  60. max_p_sum=Math.max(max_p_sum,max_p[i]);
  61. max_s_sum=Math.max(max_s_sum,max_s[i]);
  62. }
  63. int f_ans1=Math.max(Psum,max_p_sum);
  64. for(int i=1; i<max_p.length; i++){
  65. f_ans1=Math.max(f_ans1,prefix[i]);
  66. f_ans1=Math.max(f_ans1,prefix[i]+Psum);
  67. }
  68. int f_ans2=Math.max(Psum,max_s_sum);
  69. for(int i=1;i<max_s.length;i++){
  70. f_ans2=Math.max(f_ans2,suffix[i]);
  71. f_ans2=Math.max(f_ans2,suffix[i]+Psum);
  72. }
  73. return Math.max(f_ans1,f_ans2);
  74. }
  75. }
  76.  
  77.  
  78.  
Success #stdin #stdout 0.14s 56612KB
stdin
2
5
5 2 -11 8 10
4
2 4 -2 8 
5
1 3 -5 2 2
2
2 3

stdout
32
9