#include<iostream> using namespace std; const int sizeI = 1005; const int sizeJ = 33; int dp[sizeI][sizeJ]={0}, Tot[sizeI]={0}; int begin, T, W, Num; int main() { int i, j, temp; while (scanf("%d%d", &T, &W)!=EOF) { Num = 1; scanf("%d", &begin); temp = begin; Tot[Num]=1; for (i = 1; i < T; i++) { scanf("%d", &j); if (j == temp) Tot[Num] ++; else { Num++; temp = j; Tot[Num]=1; } } dp[begin][0] = Tot[begin]; for (i = begin+2; i <= Num; i+=2) dp[i][0] = dp[i-2][0]+Tot[i]; for (i=(begin==1)?2:1; i <= Num; i+=2) dp[i][0] = 0; dp[1][1] = Tot[1];/*无论*/ dp[2][1] = dp[1][0] + Tot[2]; dp[2][2] = Tot[1]+Tot[2]; for (j = 1; j <= W; j++) for (i = 2; i <= Num; i++) dp[i][j] = max(dp[i-1][j-1], dp[i-2][j]) + Tot[i]; int ans = dp[Num][W]; if (Num > 1) ans = max(ans, dp[Num-1][W]); printf("%d/n",ans); } return 0; }