Problem p03160 (C++)

Buggy submission (status: Runtime Error):
#include "algorithm"
#include "cstring"
#include "ctime"
#include "iostream"
#include "map"
#include "math.h"
#include "numeric"
#include "queue"
#include "set"
#include "stack"
#include "string"
#include "vector"

#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/detail/standard_policies.hpp>
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update

using namespace std;
using namespace __gnu_pbds;

#define f first
#define lgn 25
#define endl '\n'
#define sc second
#define N (int)2e5 + 5
#define pb push_back
#define mod 1000000007
#define ld long double
#define vi vector<int>
#define eb emplace_back
#define vpii vector<pii>
#define mii map<int, int>
#define int long long
#define pii pair<int, int>
#define pq priority_queue
#define test(x) while (x--)
#define all(x) begin(x), end(x)
#define allr(x) rbegin(x), rend(x)
#define fo(i, a, n) for (int i = a; i < n; i++)
#define rfo(i, n, a) for (int i = n; i >= a; i--)
#define db(x) cout << #x << " : " << x << endl;
#define FAST                                                                   \
  ios::sync_with_stdio(0);                                                     \
  cin.tie(0);                                                                  \
  cout.tie(0);
#define time()                                                                 \
  cerr << "Time : " << (double)clock() / (double)CLOCKS_PER_SEC << "s\n"
#define PI acos(-1.0)
#define bug(...) __f(#__VA_ARGS__, __VA_ARGS__)

typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    OS;

template <typename Arg1> void __f(const char *name, Arg1 &&arg1) {
  cout << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cout.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}

inline void INP() {
#ifndef ONLINE_JUDGE
  freopen("in.txt", "r", stdin);
  freopen("ou.txt", "w", stdout);
#endif
}

const int inf = 0x3f3f3f3f;
const int INF = 0x3f3f3f3f3f3f3f3f;

int n, m, k, q;
string s;
int vis[N], dp[N], h[N];

void go() {
  cin >> n;

  fo(i, 0, n) cin >> h[i];

  memset(dp, 0x3f3f3f3f, sizeof dp);

  dp[0] = 0;
  dp[1] = abs(h[0] - h[1]);

  fo(i, 2, n) {
    dp[i] = min(
        {dp[i - 1] + abs(h[i] - h[i - 1]), dp[i - 2] + abs(h[i] - h[i - 2])});
  }

  cout << dp[n - 1] << endl;
}

int32_t main() {
  INP();
  FAST;
  int t = 1;
  // cin>>t;
  test(t) go();
}


Fixed submission:
#include "algorithm"
#include "cstring"
#include "ctime"
#include "iostream"
#include "map"
#include "math.h"
#include "numeric"
#include "queue"
#include "set"
#include "stack"
#include "string"
#include "vector"

#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/detail/standard_policies.hpp>
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update

using namespace std;
using namespace __gnu_pbds;

#define f first
#define lgn 25
#define endl '\n'
#define sc second
#define N (int)2e5 + 5
#define pb push_back
#define mod 1000000007
#define ld long double
#define vi vector<int>
#define eb emplace_back
#define vpii vector<pii>
#define mii map<int, int>
#define int long long
#define pii pair<int, int>
#define pq priority_queue
#define test(x) while (x--)
#define all(x) begin(x), end(x)
#define allr(x) rbegin(x), rend(x)
#define fo(i, a, n) for (int i = a; i < n; i++)
#define rfo(i, n, a) for (int i = n; i >= a; i--)
#define db(x) cout << #x << " : " << x << endl;
#define FAST                                                                   \
  ios::sync_with_stdio(0);                                                     \
  cin.tie(0);                                                                  \
  cout.tie(0);
#define time()                                                                 \
  cerr << "Time : " << (double)clock() / (double)CLOCKS_PER_SEC << "s\n"
#define PI acos(-1.0)
#define bug(...) __f(#__VA_ARGS__, __VA_ARGS__)

typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    OS;

template <typename Arg1> void __f(const char *name, Arg1 &&arg1) {
  cout << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cout.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}

inline void INP() {
#ifndef ONLINE_JUDGE
  freopen("in.txt", "r", stdin);
  freopen("ou.txt", "w", stdout);
#endif
}

const int inf = 0x3f3f3f3f;
const int INF = 0x3f3f3f3f3f3f3f3f;

int n, m, k, q;
string s;
int vis[N], dp[N], h[N];

void go() {
  cin >> n;

  fo(i, 0, n) cin >> h[i];

  memset(dp, 0x3f3f3f3f, sizeof dp);

  dp[0] = 0;
  dp[1] = abs(h[0] - h[1]);

  fo(i, 2, n) {
    dp[i] = min(
        {dp[i - 1] + abs(h[i] - h[i - 1]), dp[i - 2] + abs(h[i] - h[i - 2])});
  }

  cout << dp[n - 1] << endl;
}

int32_t main() {
  // INP();
  FAST;
  int t = 1;
  // cin>>t;
  test(t) go();
}