#include #include #include #include #include #include #include #include #include #include using namespace std; istream& operator >> (istream& is, vector& vec){ for(int& val: vec) scanf("%d", &val); return is;} template istream& operator >> (istream& is, vector& vec){ for(T& val: vec) is >> val; return is;} int main(){ int n,m; //cin >> n >> m; scanf("%d%d", &n,&m); vector w(n); //cin >> w; for(int& x:w) scanf("%d", &x); if(m<=1){ cout << 0 << endl; return 0; } if(n==m){ printf("%d\n", accumulate(w.begin(), w.end(), 0)); return 0; } const int inf = 100000000; //vector>> dp (2,vector>(2,vector(m+2, -inf))); //vector>> dp_(2,vector>(2,vector(m+2, -inf))); vector> dp(4, vector(m+2, -inf)); vector> dp_(4, vector(m+2, -inf)); //dp[0][0][0] = 0; //dp[1][1][1] = 0; dp[0][0] = 0; dp[3][1] = 0; for(int i=1; i