题目链接
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
#define int long long
int a[N],id[N];
int n,d;
bool check(int mid)
{
int sum=0,cnt=0;
for(int i=1;i<=d;i++)
{
while(sum<mid)
{
sum+=a[++cnt];
id[cnt]=i;
if(cnt>n)return false;
}
sum>>=1;
}
for(int i=cnt+1;i<=n;i++)id[i]=d;
return true;
}
signed main()
{
cin>>n>>d;
int l=0,r=0;
for(int i=1;i<=n;i++)cin>>a[i],r+=a[i];
while(l<r)
{
int mid=l+r+1>>1;
if(check(mid))l=mid;
else r=mid-1;
}
cout<<l<<endl;
if(check(l))for(int i=1;i<=n;i++)cout<<id[i]<<endl;
}