请各位DALAO们帮我看看为什么我的代码会WA四个测试点?
下面是Furina的代码:
#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
int n,d;
int h[50005];
int l,r;
bool ch(int x){
int sum=0,cnt=1;
for(int i=1;i<=d;i++){
if(sum<x){
if(cnt>n){
return 0;
}
else{
while(sum<x){
if(cnt>n){
return 0;
}
sum+=h[cnt++];
}
}
}
sum/=2;
}
return 1;
}
signed main(){
cin>>n>>d;
for(int i=1;i<=n;i++){
cin>>h[i];
}
l=1,r=0x3f3f3f3f;
while(l<=r){
int mid=(l+r)/2;
if(ch(mid)){
l=mid+1;
}
else{
r=mid-1;
}
}
cout<<r<<endl;
int sum=0,cnt=1;
for(int i=1;i<=d;i++){
if(sum<r){
if(cnt>n){
return 0;
}
else{
while(sum<r){
if(cnt>n){
return 0;
}
sum+=h[cnt++];
cout<<i<<endl;
}
}
}
sum/=2;
}
}