90分奇怪的错误,求条
查看原帖
90分奇怪的错误,求条
909157
luckyzlb楼主2024/8/20 09:39

测试数据1输出一样,为什么不对,求dalao解答

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,d,maxn;
int a[50010],ans[50010];
bool check(int x){
	int i=1,num=0,day; 
	for(day=1;i<=n&&day!=d;day++){
		while(num<x){
			num+=a[i];
			ans[i]=day;
			i++;
		}
		num=num/2;
	}
	for(i;i<=n;i++){
		ans[i]=day;
		num+=a[i];
	}
	return day==d&&num>=x;
}
signed main(){
	cin>>n>>d;
	for(int i=1;i<=n;i++){
		cin>>a[i];maxn+=a[i];
	}
	int l=1,r=maxn;
	while(l<=r){
//		cout<<l<<" "<<r<<'\n';
		int mid=(l+r)>>1;
		if(check(mid)) l=mid+1;
		else r=mid-1;
	}
	check(r);
	cout<<r<<'\n';
	for(int i=1;i<=n;i++){
		cout<<ans[i];
		if(i!=n) cout<<'\n';
	}
	return 0;
}

2024/8/20 09:39
加载中...