#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned int UInt; #define FOR(i,a,b) for(int i = a; i < (int)(b); ++i) #define FOR_REV(i,a,b) for(int i = b-1; i >= (int)(a); --i) template inline T sqr(T v) { return v * v; } template inline int sign(T v) {return v == 0 ? 0 : (v > 0 ? 1 : -1);} template int get_bit(T v, int bit_index) { return (v >> bit_index) & 1; } //return {0,1} istream& input() { ios_base::sync_with_stdio(false); //#undef INPUT_FROM_FILE #ifdef INPUT_FROM_FILE static ifstream is("HackerRank/input.txt"); #else istream& is = cin; #endif return is; } ostream& output() { cout << setprecision(15); return cout; } ////////////////////////////////////////////////////////////////////////// //templateQueueWithMin{}; //public: // T min() const { return q.front(); } // // void push(T v) // { // while (!q.empty() && q.back() > v) // q.pop_back(); // q.push_back (v); // } // // void pop(T v) // { // if (!q.empty() && q.front() == v) // q.pop_front(); // } //private: //deque q; //}; //d int main() { istream& is = input(); ostream& os = output(); int n,k; is >> n>>k; vector a(n); FOR (i,0,n) is >> a[i]; vector dp(n+k,LLONG_MAX); //QueueWithMin q; //FOR (i,0,k) // q.push(0); FOR (i,0,n) { ll m=LLONG_MAX; FOR (j,i-k-1,i+k) { if (j>=0) m=min(m,dp[j]); else m=min(m,0ll); } dp[i+k]=min(dp[i+k],m+a[i]); } ll m=dp[n-1]; FOR (j,n-1,n+k) { if (j>=0) m=min(m,dp[j]); } os << m; return 0; } ////b //int main() //{ // istream& is = input(); // ostream& os = output(); // // int t; // for (is >> t; t; --t) // { // int n; // is >> n; // vector a(n); // int x_min=100000,x_max=-100000,y_min=100000,y_max=-100000; // FOR (i,0,n) // { // is >> a[i].x>>a[i].y; // x_min=min(x_min,a[i].x); // x_max=max(x_max,a[i].x); // y_min=min(y_min,a[i].y); // y_max=max(y_max,a[i].y); // } // // bool ok =false; // //if (x_min>n>>m; // // ll n0=max(n,m); // ll n1=min(n,m); // // ll res= n1-1 + n1*(n0-1); // os<> t; t; --t) // { // int n; // is >> n; // vector a(n); // FOR (i,0,n) // is >> a[i]; // // //int res = 0; // //os << res; // } // return 0; //}