josiftepe

Untitled

Nov 14th, 2020
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. const int maxn = 1e5 + 10;
  5. const int INF = 2e9 + 5;
  6. int n;
  7. int a[100000];
  8. int dp[100000]; // do pozicija i, dp[i] vraka minimalna suma so skokovi od i + 1, i + 2, taka sto vrednost da skokneme od i do i + 1 ili i + 2 = |a[i] - a[i + 1]| ili |a[i] - a[i + 2]|
  9. int main(){
  10.     cin>>n;
  11.     for (int i=0;i<n;i++){
  12.         cin>>a[i];
  13.         dp[i] = INF;
  14.     }
  15.     dp[0] = 0; // da stignam do 0 ne treba da skokam nikade, bidejki zhabata veke se naoga na pozicija 0
  16.     for(int i = 1; i < n; ++i) {
  17.         dp[i] = min(dp[i], dp[i - 1] + abs(a[i] - a[i - 1]));
  18.         if(i > 1) {
  19.             dp[i] = min(dp[i], dp[i - 2] + abs(a[i] - a[i - 2]));
  20.         }
  21.     }
  22. //    for(int i = 0; i < n; ++i) {
  23. //        cout << "Do poleto " << i + 1 << " se stiga so: " << dp[i] << " cekori\n";
  24. //    }
  25.     cout << dp[n - 1] << endl;
  26.    
  27.     return 0;
  28. }
  29.  
Advertisement
Add Comment
Please, Sign In to add comment