//g++ -std=c++0x your_file.cpp -o your_program #include #include #include #include #include #include #include #include #include #include #include #include #define fname "" #define mp make_pair #define F first #define pb push_back #define S second #define ub upper_bound #define lb lower_bound #define inf 2000000000 #define INF 2000000000000000000ll using namespace std; const int maxn = 10101; long long d[maxn], previ[maxn]; int a[maxn]; int main() { int n, k; cin >> n >> k; for (int i = 1; i <= n; i++) scanf("%d", &a[i]); int pos; for (int i = 1; i <= n; i++) { d[i] = previ[i] = inf; for (int j = 1; j <= k + 1 && i - j >= 0; j++) d[i] = min(d[i], a[i] + previ[i - j]); for (int j = 0; j <= k && i - j >= 1; j++) previ[i] = min(previ[i], d[i - j]); // cout << d[i] << " " << previ[i] << endl; } cout << previ[n]; return 0; }