Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int main() {
- int n, k;
- cin >> n >> k;
- vector<int> v(n);
- for (int i = 0; i < n; i++) {
- cin >> v[i];
- v[i] = 1 - v[i];
- }
- vector<int> pref(n + 1, 0);
- for (int i = 0; i < n; i++) {
- pref[i + 1] = pref[i] + v[i];
- }
- int najgolema_golemina = 0;
- int start_idx = 0;
- int left = 0, right = n;
- while (left <= right) {
- int mid = (left + right) / 2;
- int found_start = -1;
- for (int i = 0; i + mid <= n; i++) {
- int broken = pref[i + mid] - pref[i];
- if (broken <= k) {
- found_start = i;
- break;
- }
- }
- if (found_start != -1) {
- najgolema_golemina = mid;
- start_idx = found_start;
- left = mid + 1;
- } else {
- right = mid - 1;
- }
- }
- cout << najgolema_golemina << endl;
- for (int i = start_idx; i < start_idx + najgolema_golemina; i++) {
- if (v[i] == 1) {
- cout << i + 1 << " ";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment