func_code_string: #include <bits/stdc++.h>   using namespace std;   int N, K;   int A[310000];   int dp[31000][210][4][2];   int ins(int i, int k, int bit) {     if (k == 1) {       if (bit % 2 == 0) return A[i];       return -A[i];     }     if (k == K) {       if (bit / 2 == 0) return -A[i];       return A[i];     }     int res = 0;     if (bit % 2 == 0)       res += A[i];     else       res -= A[i];     if (bit / 2 == 0)       res -= A[i];     else       res += A[i];     return res;   }   int main() {     for (int(i) = 0; (i) < (31000); (i)++)       for (int(j) = 0; (j) < (210); (j)++)         for (int(k) = 0; (k) < (4); (k)++)           for (int(l) = 0; (l) < (2); (l)++) dp[i][j][k][l] = -(1 << 30);     scanf( %d%d , &N, &K);     for (int(i) = 0; (i) < (N); (i)++) scanf( %d , &A[i]);     dp[0][0][0][0] = 0;     for (int(i) = 0; (i) < (N); (i)++) {       for (int(j) = 0; (j) < (K + 1); (j)++)         for (int(b) = 0; (b) < (4); (b)++) {           dp[i + 1][j][b][0] = max(dp[i + 1][j][b][0], dp[i][j][b][0]);           dp[i + 1][j + 1][b % 2 * 2][1] =               max(dp[i + 1][j + 1][b % 2 * 2][1],                   dp[i][j][b][0] + ins(i, j + 1, b % 2 * 2));           dp[i + 1][j + 1][b % 2 * 2][1] =               max(dp[i + 1][j + 1][b % 2 * 2][1],                   dp[i][j][b][1] + ins(i, j + 1, b % 2 * 2));           dp[i + 1][j + 1][b % 2 * 2 + 1][1] =               max(dp[i + 1][j + 1][b % 2 * 2 + 1][1],                   dp[i][j][b][0] + ins(i, j + 1, b % 2 * 2 + 1));           dp[i + 1][j + 1][b % 2 * 2 + 1][1] =               max(dp[i + 1][j + 1][b % 2 * 2 + 1][1],                   dp[i][j][b][1] + ins(i, j + 1, b % 2 * 2 + 1));           dp[i + 1][j][b][1] =               max(dp[i + 1][j][b][1], dp[i][j][b][1] + ins(i, j, b));           dp[i + 1][j][b][0] = max(dp[i + 1][j][b][0], dp[i][j][b][1]);         }       for (int(j) = 0; (j) < (K + 1); (j)++)         for (int(k) = 0; (k) < (4); (k)++)           for (int(l) = 0; (l) < (2); (l)++)             if (dp[i + 1][j][k][l] < -(1 << 29)) dp[i + 1][j][k][l] = -(1 << 30);     }     int res = -(1 << 30);     for (int(b) = 0; (b) < (4); (b)++)       for (int(l) = 0; (l) < (2); (l)++) res = max(res, dp[N][K][b][l]);     cout << res << endl;   }   