整点巧克力
#include <bits/stdc++.h>
using namespace std;
const int N = 5e4 + 10;
long long a[N], sum;
int n, d;
int s[N];
bool check(long long mid){
long long tmp = 0;
int cnt = 0;
for(int i = 1; i <= d; ++i){
while(tmp < mid){
tmp += a[++cnt];
if(cnt > n) return false;
s[cnt] = i;
}
tmp /= 2;
}
for(int i = cnt + 1; i <= n; ++i) s[i] = d;
return true;
}
signed main(){
cin >> n >> d;
for(int i = 1; i <= n; ++i){
cin >> a[i]; sum += a[i];
}
long long l = 0, r = sum;
//二分快乐值
while(l < r){
long long mid = (l + r + 1) >> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
cout << l << endl;
check(l);
for(int i = 1; i <= n; ++i) cout << s[i] << endl;
return 0;
}