请问为什么是输出l,而不是r?(输出l全部AC,输出r全部WA)
查看原帖
请问为什么是输出l,而不是r?(输出l全部AC,输出r全部WA)
661913
liwenxi1145144444楼主2023/1/2 14:13
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100001],maxx=LONG_LONG_MIN,num;
bool check(long long maxn,long long m){
	m--;
	long long sum=0;
	for(int i=1;i<=n;i++){
		if(sum+a[i]<=maxn){
			sum+=a[i];
		}else{
			sum=a[i];
			m--;
		}
	}
	return m>=0;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		maxx=max(maxx,a[i]);
		num+=a[i];
	}
	long long l=maxx,r=num;
	while(l<=r){
		long long mid=(l+r)/2;
		if(check(mid,m)){
			r=mid-1;
		}else{
			l=mid+1;
		}
	}
	cout<<l;
	return 0;
}
2023/1/2 14:13
加载中...