44分求助
查看原帖
44分求助
1003284
封禁用户楼主2024/1/22 19:48
#include<bits/stdc++.h>
using namespace std;
int n,k,a[510],l,r=INT_MAX,ans;
bool check(int mid){
	int cnt=0,sum=0;
	//cout<<mid<<endl;
	for (int i=1;i<=n;i++){
		sum+=a[i];
		if (sum>mid){
			sum=a[i];
			cnt++;
		}
		//cout<<sum<<' ';
	}
	//puts("");
	return cnt>=k;
}
int main(){
	cin>>n>>k;
	for (int i=1;i<=n;i++){
		cin>>a[i];
	}
	while(l<=r){
		int mid=l+r>>1;
		if (check(mid)){
			l=mid+1;
		}else{
			r=mid-1;
		}
	}
	int sum=0;
	int j=1;
	for (int i=1;i<n;i++){
		sum+=a[i];
		if (sum+a[i+1]>l){
			printf("%d %d\n",j,i);
			sum=0;
			j=i+1;
		}
	}
	printf("%d %d",j,n);
	return 0;
}
2024/1/22 19:48
加载中...