Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #include<vector>
  2. #include<map>
  3. #include<algorithm>
  4. #include<set>
  5. #include<iostream>
  6. #include<string>
  7. #include<set>
  8. #include<queue>
  9.  
  10. using namespace std;
  11.  
  12. #pragma GCC optimize("Ofast")
  13. #pragma GCC optimize("fast-math")
  14. #pragma GCC optimize("unroll-loops")
  15. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,tune=native")
  16.  
  17. #define pb push_back
  18. #define int long long
  19. #define ld long double
  20. #define ll long long
  21.  
  22. int32_t main()
  23. {
  24. ios_base::sync_with_stdio(0);
  25. cin.tie(0);
  26. cout.tie(0);
  27. int n;
  28. cin >> n;
  29. vector<int> v(n);
  30. for (int i = 0; i < n; i++) {
  31. cin >> v[i];
  32. }
  33. vector<int> dp(n + 1, 1e18);
  34. dp[0] = 0;
  35. for (int i = 1; i <= n; i++) {
  36. int sum = 0;
  37. for (int j = i - 1; j >= max(0ll, i - 8); j--) {
  38. sum += v[j];
  39. dp[i] = min(dp[i], dp[j] + sum);
  40. }
  41. if (i < 10) {
  42. continue;
  43. }
  44. else {
  45. dp[i] += dp[i - 10];
  46. int sum = 0, mn = 1e18;
  47. for (int j = i - 1; j >= i - 10; j--) {
  48. sum += v[j];
  49. mn = min(mn, v[j]);
  50. }
  51. dp[i] += sum - mn;
  52. }
  53. cout << dp[i] << " ";
  54. }
  55. cout << dp[n];
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement