Mam do zrobienia zadanie, w którym dla podanej sekwencji znaków oraz liczby całkowitej (liczba ta oznacza ilosć siatek maskujących) należy określić jaka długość ma być takich samych, najmniejszych powierzchni siatek maskujących pokrywających te znaki,
np:
&-znak, '.' -puste pole
&&..&&&.&&
3
to będzie 3 bo |&&.|.|&&&||.&&|
Wiem,że należy użyć metody dziel & zwyciężaj, ale nie do końca mi to wychodzi, ma ktoś jakiś pomysł?
Tyle na razie napisałem, ale to srednio działa.

#include <iostream>

using namespace std;

void CoverIt(int n,char a[],int m)
{
    int maxV=n,minV=0,s=n,j=0;
do
{
       j=0;
        s=(minV+maxV)/2;
        for(int i=0;i<n;i++)
        {
            if(a[i]=='&')
            {
                cout<<i<<endl;
                i+=s-1;
                j++;
            }
        }
        if(j==0)
        {
            minV=maxV=0;
        }
        else if(j==m)
        {
            maxV=s;
        }
        else if(j>m)
        {
            minV=s+1;
        }
        else if(j<m)
        {
            maxV=s-1;
        }

}
while(minV!=maxV);
cout<<maxV;

}
int main()
{
    int n,m;
    char a[1000];

    cin>>n;
    cin>>m;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    CoverIt(n,a,m);
    return 0;
}