求助,只有40
查看原帖
求助,只有40
100910
⚡小林子⚡海棠喵楼主2020/5/25 13:48
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,d,a[50001],ans[50001],l,r=1;
bool check(int x){
	int c=1,now=0;bool flag=1;
	for(int i=1;i<=d&&flag;i++){
		while(now<x&&c<=n)
			ans[c]=i,now+=a[c++];
		while(i==d&&c<=n)
			ans[c]=i,now+=a[c++]; 
		if(c>n&&now<x){
			flag=0;
			break; 
		}
		now/=2;
	}
	return flag;
}
signed main(){
	cin>>n>>d;
	for(int i=1;i<=n;i++)
		cin>>a[i],r+=a[i];
	while(l<r){
		int mid=(l+r)>>1;
		if(check(mid)) l=mid+1;
		else r=mid;
	}
	cout<<r-1<<endl;
	for(int i=1;i<=n;i++)
		cout<<ans[i]<<endl;
	return 0;
}
2020/5/25 13:48
加载中...