Z tym zadaniem jest problem
Chłopcy i dziewczynki ustawili się w szereg, osoba tuż obok osoby. Zastanawiamy się teraz, ilu minimalnie chłopców musi usunąć się z szeregu, aby pod rząd stało dziewczynek, jedna tuż obok drugiej i pomiędzy nimi wszystkimi nie stał żaden chłopiec.
Wejście
Pierwszy wiersz standardowego wejścia zawiera dwie liczby całkowite n,k, oznaczające odpowiednio liczbę osób ustawionych w szeregu oraz liczbę dziewczynek, jakie chcemy, aby stały pod rząd . Kolejny wiersz wejścia zawiera liczb całkowitych {0 lub 1}, oznaczających kolejne osoby ustawione w szeregu: 0 - oznacza dziewczynkę, 1 - chłopca.
Wyjście
Pierwszy i jedyny wiersz standardowego wyjścia powinien zawierać jedną liczbę całkowitą, oznaczającą minimalną liczbę chłopców, którzy powinni usunąć się z szeregu, lub jedno słowo 'NIE', gdy nie da się usunąć chłopców tak, aby k dziewczynek stało pod rząd.
Przykład
Dla danych wejściowych:
8 3
0 1 1 0 1 0 1 0
poprawną odpowiedzią jest:
2
Na razie tyle udało mi się wypocić
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,k,dz,poczatek,koniec,score;
cin >> n >> k;
vector <int> ogol(n);
for(int i =0;i<n;i++){
cin >> ogol[i];}
poczatek = 1;
koniec = 1;
score = n + 1;
if(ogol[0]==0){
dz=1;}
else{
dz=0;}
while(koniec<n){
while(dz<k && poczatek<n){
poczatek ++;
if(ogol[poczatek]==0){
dz++;}}
if(dz==k){
score=min(score,poczatek-koniec+1);}
if(ogol[koniec]==0){
dz=dz-1;}
koniec++;}
if(score ==n+1){
cout << "NIE";}
else{
cout << score-k;
}
return 0;
}