WA #2 #9 #10 帮帮孩子吧,要吐了QWQ
查看原帖
WA #2 #9 #10 帮帮孩子吧,要吐了QWQ
931492
xiaohuanxiong楼主2025/2/8 00:10
#include <bits/stdc++.h>
using namespace std;
unsigned long long n,m;
unsigned long long maxn=0;
unsigned long long l,r,mid;
unsigned long long a[50001]={};
unsigned long long f[50001]={};
unsigned long long pr;
bool dfs(long long t)
{
	unsigned long long l=0,ans=0,b=1;
	for (int i=1;i<=m;i++)
	{
		while (ans<t)
		{
			if (l>n) return false;
			ans+=a[++l];
		}
		for (int j=b;j<=l;j++)
			f[j]=i;
		b=l+1;
		ans=floor(ans/2);
	}
	return true;
}
int main()
{
	cin>>n>>m;
	for (int i=1;i<=n;i++)
	{
		cin>>a[i];
		maxn+=a[i];
	}
	l=0;r=maxn;
	while (l<=r)
	{
		mid=(l+r)/2;
		if (dfs(mid)==true){
			l=mid+1;
			pr=mid;
		} 
		else r=mid-1;
	}
	printf("%lld\n",pr);
	memset(f,-1,sizeof(f));
	dfs(pr);
	for (int i=1;i<=n;i++)
	{
		cout<<min(f[i],m)<<endl;
	}
	return 0;
}

2025/2/8 00:10
加载中...