//1
#include <bits/stdc++.h>
using namespace std;
int n,m,a[100005];
int check(int x){
int s=0,cnt=0;
for(int i=1;i<=m;i++){
s+=a[i];
while(s>=x){
cnt++;
s/=2;
}
}
return cnt;
}
int main(){
cin>>n>>m;
long long sum=0;
for(int i=1;i<=m;i++){
cin>>a[i];
sum+=a[i];
}
long long L=1,R=sum,Mid;
while(L<=R){
Mid=(L+R)/2;
if(check(Mid)>=n){
L=Mid+1;
}else{
R=Mid-1;
}
}
cout<<R<<endl;
}
//2
#include<bits/stdc++.h>
using namespace std;
bool check(int L,int n,int k,string s){
int cnt=0,i=0;
while(i<n){
if(s[i]=='1'){
cnt++;
i+=L;
}else{
i++;
}
}
return cnt<=k;
}
int main(){
int n,k;
cin>>n>>k;
string s;
cin>>s;
int h=0;
for(int i=1;i<=s.size();i++){
if(s[i]!='0'){
h=1;
break;
}
}
if(h==0){
cout<<0;
return 0;
}
int left=1,right=n;
int res=0;
while(left<=right){
int mid=(left+right)/2;
if(check(mid,n,k,s)){
res=mid;
right=mid-1;
}else{
left=mid+1;
}
}
cout<<res<<endl;
return 0;
}