错误信息:
[Error] Id returned 1 exit stauts
经检验已得出不是因为运行程序未关闭造成的,函数名的调用貌似也没有多大问题
#include<bits/stdc++.h>
using namespace std;
const int maxN=2e5+9;
int f[maxN][29];
int n,k;
void init(){
for (int i=1;i<=n;i++) cin>>f[i][0];
for (int len=1;(1<<len)<=n;len++){
for (int i=1;i+(1<<len)-1<=n;i++){
f[i][len]=max(f[i][len-1],f[i+(1<<len-1)][len-1]);
}
}
}
int query(int l,int r){
int len=0;
for (;;len++){
if ((1<<len+1)>(r-l+1)) break;
}
return max(f[l][len],f[r-(1<<len)+1][len]);
}
bool check(int x){
int len=n/x;
long long energy=0;
for (int i=1;i<=x;i++){
int l=(i-1)*len+1,r=i*len;
energy+=query(l,r);
}
return energy>=k;
}
int bfind(int l,int r){
int ans=0;
while (l<=r){
int mid=l+r>>1;
if (check(mid)) ans=mid,r=mid-1;
else l=mid+1;
}
return ans;
}
int main(){
while (cin>>n>>k){
if (n==-1&&k==-1) break;
init();
cout<<bfind(1,n)<<endl;
}
return 0;
}