第二题 int n, k; vector<int> vec; int main() { char pre,temp; string s; cin >> s >> k; n = s.size(); pre = 'n&(392)#39;; int count=0; int flag = true; for (int i = 0; i < n; i++) { temp=s[i]; if (pre == 'n&(392)#39;) { pre = temp; count = 1; if (temp == '0') flag = false; continue; } if (temp != pre) { vec.push_back(count); //cout << count << endl; count = 0; } count++; pre = temp; } vec.push_back(count); //cout << count << endl; int i = 0; if (!flag) i = 1; int ans = 0; for ( ; i < vec.size(); i++) { int rest_k = k; int res = 0; for (int j = i; j < vec.size(); j++) { res += vec[j]; j++; if (j >= vec.size()) break; if (rest_k >= vec[j]) { res += vec[j]; rest_k -= vec[j]; } else { res += rest_k; rest_k = 0; break; } } if(rest_k > 0) { if (i >= 1) { res += min(vec[i - 1], rest_k); } ans = max(ans, res); break; } ans = max(ans, res); } cout << ans; }