cpp
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
const int N=1000010;
ll a[N],ans,maxn,n,c,k,sum,d,j;
ll day[N],l,r;
//std::ios::sync_with_stdio(false);//最好加上,小技巧,省时间(加上以后cin比scanf还快你信吗)。
bool judge(int x)
{
sum=0; j=0;
for(int i=1;i<=d;i++)
{
sum/=2;
cout<<"sum="<<sum<<endl;
while(sum<x)
{
if(j<=n)
{
j++;
sum+=a[j];
cout<<"sum1="<<sum<<endl;
day[i]=j;//记录每天吃了多少块巧克力
}
else return 0;
}
// day[i]=j;//记录每天吃了多少块巧克力
}
return 1;
}
// if(sum<x)
// {
// sum+=a[j];
// j++;
// }
// else sum=sum/2;
//// cout<<"j="<<j<<" "<<"i="<<i<<endl;
// pos[i]=j-1;
int main()
{
cin>>n>>d;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxn+=a[i];
}
l=0; r=maxn;
while(l<=r)//二分查找每次需要的时间
{
int mid=(l+r)>>1;
cout<<"mid="<<mid<<endl;
//找到返回1 没找到返回0 //错误点1:判断都判断错了
if(judge(mid))
{
l=mid+1;
// ans=mid;
}
else r=mid-1;
}
cout<<r<<endl;
// judge(r);
for(int i=1;i<=d;i++)
{
cout<<day[i]<<endl;
}
return 0;
}