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];
- int rec(int at) /*at znaci na koja pozicija vo nizata se naogjam momentalno*/ {
- if(at == n - 1) {
- return 0; /*ako sme na kraj ne treba da skokame pak i vrakame 0*/
- }
- if(dp[at] != -1) {
- return dp[at];
- }
- int ret = INF;
- if(at + 1 < n) {
- int cost = abs(a[at] - a[at + 1]);
- ret = min(ret, rec(at + 1) + cost);
- }
- if(at + 2 < n) {
- int cost = abs(a[at] - a[at + 2]) /*abs - absolutna vrednost*/;
- ret = min(ret, rec(at + 2) + cost);
- }
- dp[at] = ret;
- return ret;
- }
- int main(){
- cin>>n;
- for (int i=0;i<n;i++){
- cin>>a[i];
- dp[i]=-1;
- }
- cout<<rec(0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment