fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 1005
  4. int n,m,ans=INT_MIN;
  5. int A[N],B[N],dp[N][N],presum[N][N];
  6. void caculate()
  7. {
  8. memset(dp,0,sizeof(dp));
  9. memset(presum,0,sizeof(presum));
  10. for(int i=1;i<=n;i++)
  11. {
  12. for(int j=1;j<=m;j++)
  13. {
  14. dp[i][j]=A[i]*B[j];
  15. if(i>1&&j>1)
  16. {
  17. dp[i][j]=max(A[i]*B[j],dp[i-1][j-1] + A[i]*B[j]);
  18. }
  19. ans=max(ans,dp[i][j]);
  20. }
  21. }
  22. }
  23. int main()
  24. {
  25. scanf("%d%d",&n,&m);
  26. for(int i=1;i<=n;i++) scanf("%d",A+i);
  27. for(int i=1;i<=m;i++) scanf("%d",B+i);
  28. caculate();
  29. for(int i=1;i<=n/2;i++) swap(A[i],A[n+1-i]);
  30. caculate();
  31. printf("%d\n",ans);
  32. }
Success #stdin #stdout 0.01s 11556KB
stdin
5 5
-3 -3 3 3 -3
2 2 2 2 2
stdout
12