// 32351ZN #include #include #include #include #include #include #include #include #include using namespace std; typedef vector ivec_t; typedef vector imat_t; typedef vector svec_t; typedef vector smat_t; #define FOR_EACH(p,q,r) for(p=q;p!=r;p++) #define FOR_EACH_C(p,c) for(p=(c).begin();p!=(c).end();p++) int main() { int n,k,i,j,l; cin >> n >> k; smat_t table(n,svec_t(n,0)); svec_t opt(n,0); svec_t horse(n); FOR_EACH(i,0,n) { cin >> horse[i]; } FOR_EACH(i,0,n){ svec_t num(2,0); FOR_EACH(j,i,n){ num[horse[j]]++; table[i][j] = num[0] * num[1]; } } opt = table[0]; FOR_EACH(i,1,k){ svec_t next(n,USHRT_MAX); FOR_EACH(j,i,n){ FOR_EACH(l,i-1,j){ int tmp = opt[l] + table[l+1][j]; if(tmp < next[j])next[j] = tmp; } } opt = next; } cout << opt.back() << endl; return 0; }