Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- const int maxn = 1e5 + 10;
- const int INF = 2e9 + 5;
- int n;
- int a[100000];
- 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]|
- int main(){
- cin>>n;
- for (int i=0;i<n;i++){
- cin>>a[i];
- dp[i] = INF;
- }
- dp[0] = 0; // da stignam do 0 ne treba da skokam nikade, bidejki zhabata veke se naoga na pozicija 0
- for(int i = 1; i < n; ++i) {
- dp[i] = min(dp[i], dp[i - 1] + abs(a[i] - a[i - 1]));
- if(i > 1) {
- dp[i] = min(dp[i], dp[i - 2] + abs(a[i] - a[i - 2]));
- }
- }
- // for(int i = 0; i < n; ++i) {
- // cout << "Do poleto " << i + 1 << " se stiga so: " << dp[i] << " cekori\n";
- // }
- cout << dp[n - 1] << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment