Problem p03161 (C++)

Buggy submission (status: Runtime Error):
// #############################################################################
//----------------------------Karma is Real------------------------------------
#include "bits/stdc++.h"
// #############################################################################
// Macros
#define MOD 1000000007
#define eb emplace_back
#define mp make_pair
#define fr first
#define sc second
#define len(x) x.size()
#define min3(a, b, c) min(a, min(b, c))
#define max3(a, b, c) max(a, max(b, c))
#define all(v) v.begin(), v.end()
#define alla(a, n) a, a + n
// Type Defs
typedef long long ll;
typedef unsigned long long ull;
// #############################################################################
using namespace std;
// #############################################################################
// Helpers
void io_handler() {
#ifndef ONLINE_JUDGE
  freopen("inputf.in", "r", stdin);
  freopen("outputf.in", "w", stdout);
#endif
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
void print_matrix(vector<vector<ll>> mat) {
  for (auto row : mat) {
    for (auto e : row) {
      cout << e << " ";
    }
    cout << endl;
  }
}
void print_vector(vector<ll> vec) {
  for (auto e : vec) {
    cout << e << " ";
  }
  cout << endl;
}
map<int, int> get_count(vector<ll> vec) {
  map<int, int> count;
  for (auto e : vec) {
    if (count.find(e) != count.end()) {
      count[e]++;
    } else {
      count[e] = 1;
    }
  }
  return count;
}
// #############################################################################
// Solution
void solve() {
  ll n, k;
  cin >> n >> k;
  vector<ll> arr(n);
  for (ll i = 0; i < n; i++) {
    cin >> arr[i];
  }
  vector<ll> dp(n, 1e11);
  dp[0] = 0;
  dp[1] = abs(arr[0] - arr[1]);
  for (ll i = 2; i < n; i++) {
    for (ll j = max(i - k, 0LL); j < i; j++) {
      dp[i] = min(dp[i], abs(arr[i] - arr[j]) + dp[j]);
    }
  }
  // print_vector(dp);
  cout << dp[n - 1] << endl;
}
// #############################################################################
// Driver
int main() {
  io_handler();
  int t = 1;
  // cin>>t;
  for (int i = 0; i < t; i++) {
    solve();
  }
  return 0;
}
// #############################################################################

Fixed submission:
// #############################################################################
//----------------------------Karma is Real------------------------------------
#include "bits/stdc++.h"
// #############################################################################
// Macros
#define MOD 1000000007
#define eb emplace_back
#define mp make_pair
#define fr first
#define sc second
#define len(x) x.size()
#define min3(a, b, c) min(a, min(b, c))
#define max3(a, b, c) max(a, max(b, c))
#define all(v) v.begin(), v.end()
#define alla(a, n) a, a + n
// Type Defs
typedef long long ll;
typedef unsigned long long ull;
// #############################################################################
using namespace std;
// #############################################################################
// Helpers
void io_handler() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
void print_matrix(vector<vector<ll>> mat) {
  for (auto row : mat) {
    for (auto e : row) {
      cout << e << " ";
    }
    cout << endl;
  }
}
void print_vector(vector<ll> vec) {
  for (auto e : vec) {
    cout << e << " ";
  }
  cout << endl;
}
map<int, int> get_count(vector<ll> vec) {
  map<int, int> count;
  for (auto e : vec) {
    if (count.find(e) != count.end()) {
      count[e]++;
    } else {
      count[e] = 1;
    }
  }
  return count;
}
// #############################################################################
// Solution
void solve() {
  ll n, k;
  cin >> n >> k;
  vector<ll> arr(n);
  for (ll i = 0; i < n; i++) {
    cin >> arr[i];
  }
  vector<ll> dp(n, 1e11);
  dp[0] = 0;
  dp[1] = abs(arr[0] - arr[1]);
  for (ll i = 2; i < n; i++) {
    for (ll j = max(i - k, 0LL); j < i; j++) {
      dp[i] = min(dp[i], abs(arr[i] - arr[j]) + dp[j]);
    }
  }
  // print_vector(dp);
  cout << dp[n - 1] << endl;
}
// #############################################################################
// Driver
int main() {
  io_handler();
  int t = 1;
  // cin>>t;
  for (int i = 0; i < t; i++) {
    solve();
  }
  return 0;
}
// #############################################################################