题目点这里
我写了二分答案,但wa了,不知道哪里错了,求助大佬们。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int arr[100010];
int n,m,k;
long long ans2=0;
bool check(int x){
long long now=0,box=1,sum=0;
for(int i=x;i<=n;i++){
if(arr[i]<=(k-now)){
sum++;
now+=arr[i];
}else{
if(box<m){
box++;
now=0;
}else{
break;
}
}
}
if(sum>=ans2){
ans2=sum;
return true;
}else{
return false;
}
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
int l=1,r=n,ans=r;
while(l<r){
int mid=(l+r)/2;
if(!check(mid)){
l=mid+1;
}else{
r=mid-1;
ans=mid;
}
}
cout<<ans2;
return 0;
}