a53

mxt_OFICIALA

a53
Nov 21st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define nmax 2002
  3. using namespace std;
  4.  
  5. int a[nmax], n;
  6. int dp[nmax][nmax];
  7. /**
  8. Programare dinamica metoda mixta
  9. dp[i,j] = costul maxim al eliminarii secventei a[i..j]
  10.  
  11. Date initiale
  12. dp(i,i) = n * a[i] , i=1,n
  13. Recurente:
  14. dp(i,j)=max((n-(j-i))*a[i] + dp(i+1,j), dp(i,j-1) + (n-(j-i))*a[j]
  15. Solutia este ÃŽn dp(1,n)
  16. */
  17.  
  18. int main()
  19. {
  20. int i, j, pas;
  21. cin >> n;
  22. for (i = 1; i <= n; i++)
  23. cin >> a[i];
  24.  
  25. for (i = 1; i <= n; i++)
  26. dp[i][i] = n * a[i];
  27.  
  28. for (pas = 1; pas < n; pas++)
  29. for (i = 1; i <= n - pas; i++)
  30. {
  31. j = i + pas;
  32. dp[i][j] = max( (n - (j - i)) * a[i] + dp[i + 1][j],
  33. dp[i][j - 1] + (n - (j - i)) * a[j]);
  34. }
  35. cout << dp[1][n];
  36. return 0;
  37. }
Add Comment
Please, Sign In to add comment